gpt4 book ai didi

编译器随机执行if语句

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:35 26 4
gpt4 key购买 nike

我有以下 C 程序:

#include <stdio.h>

int main()
{
char *filename;
FILE *fp1, *fp2;
int i, number;

fp1=fopen("TEST", "w");

for(i=10; i<=100; i+=10)
{
putw(i, fp1);
}

fclose(fp1);

printf("\nInput filename\n");

open_file:

scanf("%s", filename);


if((fp2=fopen(filename, "r"))==NULL)
{
printf("Cannot open the file.\n");
printf("Type file name again.\n");
goto open_file;
}

else
{
for(i=1; i<=20; i++)
{
number=getw(fp2);

if(feof(fp2))
{
printf("\nRan out of data\n");
break;
}

else
{
printf("%d\n", number);
}
}

fclose(fp2);
}

return 0;
}

我为 scanf("%s", filename); 输入了 TEST。但是这个语句 if((fp2=fopen(filename, "r"))==NULL) 总是在执行,我的编译器正在打印 Cannot open the file 再次随机输入文件名。这是一个 goto 语句。所以它应该等待另一个输入。但事实并非如此。哪里有问题??

最佳答案

char *filename; 是一个指针,没有为其分配内存。

尝试

char filename[100]; 并提供有效的文件名。

关于编译器随机执行if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22551440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com