strcpy

string类的实现:在VS2010和DEV4.9.9.2之间的差异

折月煮酒 提交于 2019-12-09 11:40:46
以下是string类的代码: string.h代码如下: #include<iostream> using namespace std; #ifndef STRING_H #define STRING_H //------------------------------------------------------------------- class String { private: char* m_pData; public: String(const char* pstr=NULL); String(const String& obj); String& operator=(const String& obj); String& operator=(const char* pstr); String& operator=(int nNum); char& operator[](int nIdx); const char& operator[](int nIdx)const; String& operator[](const String& obj); String& operator+=(const String& obj); String& operator+=(const char* pstr); int operator!=(const String&obj);

C 简陋版string操作strcpy strcmp strcat strchr strstr

空扰寡人 提交于 2019-12-09 11:39:02
文件下载地址: http://pan.baidu.com/s/1bn2BcTL 代码如下: #include <stdio.h> #include <stdlib.h> char *strcpy_(char *dest,const char *src); char *strcat_(char *dest,const char *src); int strcmp_(const char *dest,const char *src); int strlen_(const char *src); char *strchr_(char *s, int c); char *strstr_(const char *s,const char *c); int main() { char p[]="xxdexxx"; char q[]="de"; printf("p=%s\n",p); printf("q=%s\n",q); printf("strlen_(p)=%d\n",strlen_(p)); printf("strcpy_(p,q)=%s\n", strcpy_(p,q)); char p1[]="xxdexxx"; char q1[]="de"; printf("strchr_(p,'d')=%s\n",strchr_(p1,'d')); char p2[]="xxdexxx";

atoi,itoa,strcpy, strcmp,strcpy, strcpy_s, memc...

不问归期 提交于 2019-12-09 10:30:51
strcpy()、strlen()、memcpy()、memmove()、memset()的实现 strcpy(), 字符串拷贝. char * strcpy( char * strDest, const char * strSrc) { assert((strDest != NULL) && (strSrc != NULL)); char * address = strDest; while ( ( * strDest ++ = * strSrc ++ ) != ' \0 ' ) NULL ; return address ; } strlen, 第一种方法: int strlen( const char *str) { assert(str != NULL); int len = 0; while ((*str++) != '\0' ) len++; return len; } 第二种方法: int strlen( const char *str) { assert(str != NULL); const char *p = str; while ((*p++) != '\0' ); return p - str - 1; } 第三种方法: int strlen( const char * str) { if (str[0] == '\0' ) return 0; else

Why must a pointer to a char array need strcpy to assign characters to its array and double quotes assignment will not work?

旧街凉风 提交于 2019-12-09 10:06:45
问题 The first example does not work when you go to delete the pointer. The program either hangs when I add the null terminator or without it I get: Debug Assertion Failed Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) from Visual Studio 2008 //Won't work when deleting pointer: char *at = new char [3]; at = "tw"; // <-- not sure what's going on here that strcpy does differently at[2] = '\0'; // <-- causes program to hang delete at; //Works fine when deleting pointer: char *at = new char [3];

strcpy() and arrays of strings

混江龙づ霸主 提交于 2019-12-07 17:45:42
问题 I need to store the input from a user into an array of strings. #include <stdlib.h> #include <stdio.h> #include <string.h> char *history[10] = {0}; int main (void) { char input[256]; input = "input"; strcpy(history[0], input); return (EXIT_SUCCESS); } Running it on the terminal I get a Segmentation Fault and in NetBeans I get main.c:11: error: incompatible types in assignment. I also tried to shift all the history to store the newest input into the first position (history[0]). history[9] =

How to copy or concatenate two char*

狂风中的少年 提交于 2019-12-07 13:52:53
问题 How do you concatenate or copy char* together? char* totalLine; const char* line1 = "hello"; const char* line2 = "world"; strcpy(totalLine,line1); strcat(totalLine,line2); This code produces an error! segmentation fault I would guess that i would need to allocate memory to totalLine? Another question is that does the following copy memory or copy data? char* totalLine; const char* line1 = "hello"; totalLine = line1; Thanks in advance! :) 回答1: I would guess that i would need to allocate memory

format ’%s’ expects argument of type ’char *’

孤者浪人 提交于 2019-12-07 12:51:44
问题 For exercising my programming skills in C I'm trying to write the strncpy function by myself. Doing that I kept hitting errors, solving most of them eventually I'm stuck with no further inspiration to go on. The error I receive is: ex2-1.c:29:3: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat=] printf("The copied string is: %s.\n", stringb); The thing is that it's a very common error and that it's also already described on SO, only I can't seem

牛客 题库 memcpy memmove memset strcpy

谁说我不能喝 提交于 2019-12-07 09:14:52
1. 以下哪个函数可以在源地址和目的地址的位置任意的情况下,在源地址和目的地址的空间大小任意的情况下实 现二进制代码块的复制? memcpy、 memmove、 memset 、strcpy 解答: memmove 1) memcpy 函数原型 void *memcpy(void*dest, const void *src, size_t n); 功能 由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。 头文件 #include<string.h> 返回值    函数返回一个指向dest的指针。 说明    1. source和dest所指内存区域不能重叠 ,函数返回指向destin的指针。    2.与strcpy相比,memcpy并不是遇到'\0'就结束,而是一定会拷贝完n个字节。 memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度; 例: char a[100], b[50]; memcpy(b, a,sizeof(b)); // 注意如用sizeof(a),会造成b的内存地址溢出。 strcpy 就只能拷贝字符串了,它遇到'\0'就结束拷贝 ;例: char a[100], b[50]; strcpy(a,b);   3.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据

memcpy和memmove

牧云@^-^@ 提交于 2019-12-07 09:07:15
memcpy与memmove函数异同 memcpy memmove memset memcpy 函数原型 void * memcpy ( void * destination , const void * source , size_t num ) 头文件 < string . h > 作用:从源src所指的内存地址的起始位置开始拷贝num个字节到目标dest所指的内存地址的起始位置中。 注意: (1)memcpy是内存拷贝函数; (2)此函数不考虑类型,以字节为单位进行拷贝; (3)这个函数在遇到’\0’时不会停下来; (4)memcpy与strcpy功能有所重叠,但拷贝字符串一般使用strcpy,因为strcpy以’\0’结尾,更加专业安全。 模拟实现: # include <stdio.h> # include <windows.h> # include <assert.h> void * My_Memcpy ( void * dst , const void * src , int num ) { assert ( dst ) ; assert ( src ) ; char * dst_ = ( char * ) dst ; char * src_ = ( char * ) src ; while ( num ) { * dst_ = * src_ ; * dst_ ++

c++ 中 char 与 string 之间的相互转换问题

假如想象 提交于 2019-12-06 21:55:04
第一部分: 将 char * 或者 char [] 转换为 string 可以直接赋值,转换。 第二部分: 将 string 转换为 char * 或者 char [] string 是c++标准库里面其中一个,封装了对字符串的操作 把string转换为char* 有 3种方法 : 1. 调用 string 的 data 函数 如: string str="abc"; char *p=str.data(); 2.调用 string 的 c_str 函数 如:string str="gdfd"; char *p=str.c_str(); 3 调用 string 的 copy 函数 比如 string str="hello"; char p[40]; str.copy(p,5,0); //这里5,代表复制几个字符,0代表复制的位置 *(p+5)='/0'; // 要手动加上结束符 cout < <p; 语法: const char * c_str(); c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。 注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针 比如:最好不要这样: