运行程序的错误在哪里? 我知道在两个函数中循环FOR的行中存在问题。
我使用调试器运行,我不知道为什么会出现错误。
崩溃是: program2.exe中0x00E214E5处的未处理异常:0xC0000005:访问冲突写入位置0x00E25865。
然后程序停止。
我的代码:
#include <stdio.h>
char *what1 (char s[], char t[], int n);
int what2 (char str[], char c);
int main ()
{
printf("%s\n", what1("hello", "world", 2));
printf("%d\n", what2 ("fkbf", 'o'));
return 0;
}
char *what1 (char s[], char t[], int n)
{
char *p=s;
while (*s++);
for (--s; n-- && (*s=*t); s++, t++);
*s='\0';
return p;
}
int what2 (char str[], char c)
{
char *ptr;
for (ptr=str; *ptr;)
if ((*str=*ptr++)!=c)
str++;
*str ='\0';
return ptr-str;
}
答案 0 :(得分:3)
what1()
和what2()
都修改了作为文字传递的字符串,这是未定义的行为,因为这些字符串可以存储在只读存储器中。