积极答复者
请看这一段c程序代码,错误在哪里??

问题
-
include <stdlib.h> #include <string.h> void main() { char str1[20],str2[20],str3[40]; int i,m,n; printf("请输入字符串一\n"); gets(str1); printf("请输入字符串二\n"); gets(str2); m=strlen(str1); n=strlen(str2); printf("字符串的长度分别是%d\n%d",m,n); for(i=0;i<m;i++) str3[i]=str1[i]; for(i=0;i<n;i++) str3[i+m]=str2[i]; printf("%s\n",str3[40]); system("pause"); }
编译正常,。运行错误如下:
SYfive1.exe 中的 0x1029984f 处未处理的异常: 0xC0000005: 读取位置 0xffffffcc 时发生访问冲突
希望高手指出我编程中的错误,谢谢
答案
-
#include<stdio.h>
#include <string.h>
void main()
{
char str1[20],str2[20],str3[40];
int i,m,n;
printf("请输入字符串一\n");
gets(str1);
printf("请输入字符串二\n");
gets(str2);
m=strlen(str1);
n=strlen(str2);
printf("字符串的长度分别是%d\n%d",m,n);
for(i=0;i<m;i++)
str3[i]=str1[i];
for(i=0;i<=n;i++)
str3[i+m]=str2[i];
printf("%s\n",str3);
}
你写的有点问这样就正常了
vc 6.0下运行的
你的错误主要是:printf("%s\n",str3[40]);还有就是给最后一个字符的后面没有加上'\0'。
要问你那个为什么错有那样的错误,原因为你要访问str3[40],这个地址不属于str3[40]这个数组中。这个地址符可能是系统正有用的或其他和序的,系统不允许访问,一句访问数组越界了。- 已建议为答案 Wyz_Touring 2009年10月18日 11:14
- 已标记为答案 Allen Chen - MSFTModerator 2009年10月23日 7:39
全部回复
-
#include<stdio.h>
#include <string.h>
void main()
{
char str1[20],str2[20],str3[40];
int i,m,n;
printf("请输入字符串一\n");
gets(str1);
printf("请输入字符串二\n");
gets(str2);
m=strlen(str1);
n=strlen(str2);
printf("字符串的长度分别是%d\n%d",m,n);
for(i=0;i<m;i++)
str3[i]=str1[i];
for(i=0;i<=n;i++)
str3[i+m]=str2[i];
printf("%s\n",str3);
}
你写的有点问这样就正常了
vc 6.0下运行的
你的错误主要是:printf("%s\n",str3[40]);还有就是给最后一个字符的后面没有加上'\0'。
要问你那个为什么错有那样的错误,原因为你要访问str3[40],这个地址不属于str3[40]这个数组中。这个地址符可能是系统正有用的或其他和序的,系统不允许访问,一句访问数组越界了。- 已建议为答案 Wyz_Touring 2009年10月18日 11:14
- 已标记为答案 Allen Chen - MSFTModerator 2009年10月23日 7:39