C语言 这个程序怎么运行就崩溃? C语言程序一运行就崩溃是什么情况

C\u8bed\u8a00\u8fd9\u4e2a\u7b80\u5355\u7684\u7a0b\u5e8f\u600e\u4e48\u4e00\u8fd0\u884c\u5c31\u5d29\u6e83\uff1f

\u8fd9\u662f\u56e0\u4e3a\u4f60\u7684b\u53d8\u91cf\u662f\u4e00\u4e2a\u6307\u9488\uff0c\u6ca1\u6709\u5f00\u8f9f\u5730\u5740\u7a7a\u95f4\uff0c\u5c06char *b;\u8fd9\u53e5\u6539\u4e3achar b[1024];\u6216\u8005char *b=(char *)malloc(sizeof(char)*1024);\u9700\u8981\u5934\u6587\u4ef6#include \u5373\u53ef\u3002

\u8fd9\u79cd\u60c5\u51b5\u53eb\u505a runtime error \uff08\u8fd0\u884c\u65f6\u9519\u8bef\uff09\u3002
\u5728 Windows 7 \u4e0a\u8fd9\u6837\u63d0\u793a\uff1a

\u5728 Windows XP \u4e0a\u8fd9\u6837\u63d0\u793a\uff1a

runtime error \uff08\u8fd0\u884c\u65f6\u9519\u8bef\uff09\u5c31\u662f\u7a0b\u5e8f\u8fd0\u884c\u5230\u4e00\u534a\uff0c\u7a0b\u5e8f\u5c31\u5d29\u6e83\u4e86\u3002
\u6bd4\u5982\u8bf4\uff1a
\u2460\u9664\u4ee5\u96f6
\u2461\u6570\u7ec4\u8d8a\u754c\uff1aint a[3]; a[10000000]=10;
\u2462\u6307\u9488\u8d8a\u754c\uff1aint * p; p=(int *)malloc(5 * sizeof(int)); *(p+1000000)=10;
\u2463\u4f7f\u7528\u5df2\u7ecf\u91ca\u653e\u7684\u7a7a\u95f4\uff1aint * p; p=(int *)malloc(5 * sizeof(int));free(p); *p=10;
\u2464\u6570\u7ec4\u5f00\u5f97\u592a\u5927\uff0c\u8d85\u51fa\u4e86\u6808\u7684\u8303\u56f4\uff0c\u9020\u6210\u6808\u6ea2\u51fa\uff1aint a[100000000]

int i,j=0;只是初始化了变量j=0;而i没有初始化,是一个很大的值。

所以在执行for(;s1[i]!='\0';i++){}时,由于i很大,超过了str1[80]的长度,所以导致访问异常。

改为:
int i=0,j=0;
就可以了。

不过这段程序还有问题,就是如果str1的长度和str2的长度之和大于str1[80]定义的80个字节,当拼接字符串超过80个字节时,也会出现访问异常。
所以,在while语句
while(s2[j]!='\0')
s1[i++]=s2[j++];
内,要进行判断,就是如果i>=79,就不能再执行赋值语句,而应当跳出while循环。

错误:1.子程序第一个循环体中,变量未赋初值。
2. 多了一对花括号{}
改成如下程序,即可运行。
#include<stdio.h>
void strcopy(char s1[],char s2[])
{ int i,j=0;
for(i=0;s1[i]!='\0';i++)
while(s2[j]!='\0')
s1[i++]=s2[j++];
s1[i]='\0';}
void main()
{ char str1[80],str2[80];
printf("please input your string.\n");
gets(str1); printf("nima yiyang de \n");
gets(str2);
strcopy(str1,str2);
printf("%s",str1);}

改这里:
str[81];

然后strcpy函数最好不要用[],要指定大小。

连接字符串? 把s1[i]='\0'; 放在大括号外面
明天考试?

变量 i 没有初始化

扩展阅读:编程一般要学多久 ... 为什么不建议孩子学编程 ... c#面试题 ... 不适合学编程的人 ... 学c#有前途吗 ... c语言入门程序 ... c++编程 ... c++简单程序实例 ... c语言运行按哪个键win11 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网