大家好, 我是新手,我正在做一个代码,主要目的是在两个字符串相等的情况下打印一个数字。第一个字符串是从文件中获取的,第二个字符串是要与之比较的字符串。
代码:
int main()
{
char *string[2];
FILE *stream;
stream = fopen("REL","r");
if( (stream = fopen("REL","r")) == NULL)
{
printf("Can't open %s\n","REL");
exit(1);
}
for(int i=0;i<92;i++)
{
fscanf(stream,"%s",&string);
if( strcmp("20", *string) == 0 )
{
printf("%d",20);
}
}
fclose(stream);
}
和...当我在shell上测试时,它会提示我:
~/CM$ ./file2
Segmentation fault (core dumped)
我可能会犯一个愚蠢的错误。但是,作为一个新手,我无法弄清楚剧本出了什么问题。
答案 0 :(得分:3)
string
是一个未初始化的2 char*
数组。 fscanf
正试图写入不应该写入的内存。将string
声明为char:
char string[256];
和
fscanf(stream, "%255s", string); /* Limit number of
chars read to prevent buffer overrun. */
答案 1 :(得分:1)
试试这个:
char string[128];
fscanf(stream, "%s", string);
然后:
if (!strcmp("20", string)) {
/* The strings are equals */
}