c语言编程调试不成功

你难道不知道有Array Out of bound这种东西么?
■网友
str1与str2是字符指针,没有分配空间,所以for循环中通过下边指向常量,向常量赋值引发程序错误。声明str1与str2后,用malloc分配内存空间,再赋值。
■网友
//不用VS和Code::Blocks最差用个Dev-cpp啊。用notepad++调试,楼主真能折腾啊。#include \u0026lt;stdio.h\u0026gt;#include \u0026lt;strings.h\u0026gt; \t\t\t\t// 使用strlen,strcat需要包含头文件 int main(int argc, char *argv){\tchar str1 = "wel"; \t\t\t// sizeof(str1) = 8 (\u0026#39;w\u0026#39;,\u0026#39;e\u0026#39;,\u0026#39;l\u0026#39;,\u0026#39;\\0\u0026#39;, , , , ,)\tchar str2 = "come"; \t\t\t// sizeof(str2) = 5 (\u0026#39;c\u0026#39;,\u0026#39;o\u0026#39;,\u0026#39;m\u0026#39;,\u0026#39;e\u0026#39;,\u0026#39;\\0\u0026#39;)\t//char str2 = {\u0026#39;c\u0026#39;,\u0026#39;o\u0026#39;,\u0026#39;m\u0026#39;,\u0026#39;e\u0026#39;}; // sizeof(str2) = 4 (\u0026#39;c\u0026#39;,\u0026#39;o\u0026#39;,\u0026#39;m\u0026#39;,\u0026#39;e\u0026#39;)\tint length1= strlen(str1); \t\t// length1=3 \tint length2= strlen(str2); \t\t// length2=4\tint i;\t\t//printf("%s\",strcat(str1,str2));\t// 可以使用strcat直接合并字符串 \t \tfor(i=length1;i\u0026lt;=(length1+length2);i++)\t\tstr1 = str2; \t\tprintf("%s\",str1);\treturn 0;}/*void main()可能是单片机里的用法,资源紧张就别用c库了,自己撸个字符串合并挺好的。自己撸一般就是用sizeof或者利用字符串末尾的\u0026#39;\\0\u0026#39;这两种方法来判断边界。边界都有了合体就不困难了,注意最后给\u0026#39;\\0\u0026#39;留个空间。*/
■网友
str1直接访问到数组外面猜不出来你想干嘛
■网友
访问越界了;学会调试;main应该而且只能是int型的;多看书;
■网友
C语言的数组长度不是无限大的,其长度在声明的时候就已经被定下来了。


    推荐阅读