错误分段错误(核心已转储)
Error Segmentation fault (core dumped)
我正在为我的大学 C 课程做一些练习,我有以下代码在用户输入选项(1 或 2)后退出并出现错误分段错误(核心转储)。
我不知道这是否是我使用 ubuntu 16.04 并使用 make 命令编译源代码文件的问题。
哦,请不要推荐使用内置的 c 函数 strcpy,因为这个练习应该“教我们”如何制作我们自己的字符串副本。
那我做错了什么?
#include <stdio.h>
#define SIZE 1000
char mystrcpy(char *dest,char *src);
main(){
char str1[SIZE];
char str2[SIZE];
char str3[SIZE];
int choice;
printf("Give first string: ");
gets(str1);
printf("Give second string: ");
gets(str2);
printf("Choose one of two strings (1 h 2): ");
scanf("%d",&choice);
if (choice==1)
mystrcpy(str3,str1);
else (choice==2)
mystrcpy(str3,str2);
printf("\nFirst string is %s\n",str1);
printf("\Second string is %s\n",str2);
printf("\nThrid string is %s\n",str3);
}
char mystrcpy(char *dest,char *src){
int i;
while(1)
{
dest[i] = src[i];
if (src[i] == '[=10=]')
break;
i++;
}
return dest;
}
i
从未被初始化。 (需要 30 个字符....)
您没有初始化 i
,因此它以不确定的值开始,因此出现段错误。
请注意,在这种简单的情况下,启用警告会立即显示此问题;在更复杂的情况下,使用调试器会显示崩溃时 i
的值完全没有意义。
我正在为我的大学 C 课程做一些练习,我有以下代码在用户输入选项(1 或 2)后退出并出现错误分段错误(核心转储)。 我不知道这是否是我使用 ubuntu 16.04 并使用 make 命令编译源代码文件的问题。 哦,请不要推荐使用内置的 c 函数 strcpy,因为这个练习应该“教我们”如何制作我们自己的字符串副本。
那我做错了什么?
#include <stdio.h>
#define SIZE 1000
char mystrcpy(char *dest,char *src);
main(){
char str1[SIZE];
char str2[SIZE];
char str3[SIZE];
int choice;
printf("Give first string: ");
gets(str1);
printf("Give second string: ");
gets(str2);
printf("Choose one of two strings (1 h 2): ");
scanf("%d",&choice);
if (choice==1)
mystrcpy(str3,str1);
else (choice==2)
mystrcpy(str3,str2);
printf("\nFirst string is %s\n",str1);
printf("\Second string is %s\n",str2);
printf("\nThrid string is %s\n",str3);
}
char mystrcpy(char *dest,char *src){
int i;
while(1)
{
dest[i] = src[i];
if (src[i] == '[=10=]')
break;
i++;
}
return dest;
}
i
从未被初始化。 (需要 30 个字符....)
您没有初始化 i
,因此它以不确定的值开始,因此出现段错误。
请注意,在这种简单的情况下,启用警告会立即显示此问题;在更复杂的情况下,使用调试器会显示崩溃时 i
的值完全没有意义。