fnhp.net
当前位置:首页 >> C语言strCpy函数的实例 >>

C语言strCpy函数的实例

strcpy就是复制字符串. 形式是 strcpy(a,b); 简单的理解就是a=b. 当然 字符串不能这样直接赋值, 而是用函数实现的.比如 char a[10],b[10]="abcd"; strcpy(a,b);之后 a="abcd";

1. 在while里面不用判断*strdest!='\0',毫无意义2. 你没有在目标串中加'\0'结束符,这导致字符串末尾有乱码给你个简洁版本char * strcpy (char * dst, char * src){ char * cp = dst; while( *cp++ = *src++ ); return( dst );}

你的复制是往后挪了一格的,字符数当然要 +1.那一句没有起到任何实质性作用,因为 a[0]本来就是'a'.strcpy(str,"1234");:1. 初始 str=="",strcpy 内部的指针(指示当前字符)指向"1234"中的'1'2. 第一步 str=="1"(复制了一个字

name[0]是一个指针,指向"abc"这个字符串常量.在c语言中,字符串常量被存储在代码段中,只可读不可修改.strcpy函数要拷贝"abc"到name[0]指向的内存区域(即代码段的字符串常量区),那个区域不可写,所以出现错误.如果想修改,那么不要用字符串常量而是用字符串变量.下面是修改后的代码#include #include int main() { char name[2][4]={"abc","efg"}; strcpy(name[0],"abc"); printf("%s\n",name[0]); return 0; }这样name是一个二维数组,abc和efg都存在数组里,可以修改.

#include void strcpy_t(char *p,char *p1) { int i,m,n; i=strlen(p); for(m=0;m{ if(p[i]!='\0') p1[i]=p[i]; else break; } if(strlen(p1)!=0) for(n=0;n{ printf("%c\n",p1[n]); } } int main() { void strcpy_t(char *p,char *p1); char a[100]; char b[100]; scanf("%s",a); strcpy_t(b,a); return 0; }

printf("%d\n",sizeof(s),strlen(s)); 这句话错误,少了一个%d,sizeof也不应该分开写.strcpy(s,t); 是将字符数组t里面的内容赋给字符数组s,t[0]=X,t[1]=Y,t[2]=Z,t[3]="\0",当strcpy()函数执行完之后,字符数组s中的内容变为s[0]=X,s[1]=Y,s[2]=Z,s[3]="\0",s[4]=E,s[5]=F.sizeof(s)的值是字符数组的大小即为20.strlen(s)的值为“\0”之前的字符长度即为3.printf("%c,%s\n",s[4],s); 当输出字符数组s时,编译器当碰到第一个“\0”后便停止输出,所以s的输出为:XYZ

无论什么情况,'\0'都是要复制的这个例子中,strcpy(a,b);执行完后,a数组的情况是这样的abc\0ef\0所以a[5]是f

你写的格式貌似是错了,楼上的说得对.不过意思看懂了.应该是B不对strcpy函数的第一个参数必须是数组.str3定义的是字符型指针.

你看好了:char a[20] = "abcde" strcpy(&a[1], a)函数是逐个字符拷贝,首先拷贝第一个字符,a[0] == 'a';a[1] = a[0]; 即a[1] = 'a'; 然后拷贝第二个字符,此时a[1] == 'a'; a[2] = a[1];即a[2] = 'a'; 依次类推!!!a[0] = 'a'没什么用,其实初始a[0]就等于'a'的!

估计你不是很明白指针的原理!*strDest++ = *strSrc++ 循环过后,strDest和strSrc都指向了字符串的结尾,不能用于返回!所以要返回字符串的头只能先保存一份,在运算后用于返回!

网站首页 | 网站地图
All rights reserved Powered by www.fnhp.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com