第一个 %s 输出 的字符串 一定要以\0 结尾
str1[9]='\0'; strcpy前面加上这句 就能正常了
第2个 执行了strcpy 把 0123456789 再加个\0 给了 string 而它给他空间就10个 多了个 所以说越界
第3个数 如果 长度 大于10,string没赋值 会乱码
我是这么理解的 也不知道对不对。
第一个 最后一行printf("%s\n%c\n",*string,str1[0]);
第二个 char string[10];
改成 charstring[11],因为字符串最后是以\0结束的 数组要预留一个内存单元存放\0 这个是系统自动放进去的 用户不用管 输出改成 printf("%s\n",*string);
第三 printf("%s\n",string);
改成printf("%s\n",*string);
看来一下,总结了一下纠结你的东西:
字符和字符串的区别没搞清楚
可以先百度一下字符串(Google一下也行)
再不懂再说。
顶下面的回答
字符串需要在最后加上一个'\0'终止符,第一题中两个串都没有终止符,所以strcpy在复制的时候会出错,因为没有终止符,他不知道要在那里结束.
第二题也是同样的问题,string[10]长度为10,字符串内容为"0123456789"长度为11(因为隐含了一个终止符'\0').
第三题似乎没有错误
C/C++的字符串必须已'\0'结尾。所以:
// 1.这个运行不出结果,加一句
str1[9]='\0';
strcpy(string, str1);
就正确了。
2,3问题类似,lz扩散一下思维。