我无法打开我刚刚使用fopen()
创建的文件,我在Linux和Windows上都尝试了这个代码。我也尝试使用完整路径代码。
#include<stdio.h>
int main() {
char c;
FILE *myFile = fopen("name.txt", "w"); //file name.txt created
fprintf(myFile, "My name is %s", "Adam"); //text saved
fclose(myFile); //file closed
FILE *myOpenFile;
if(myOpenFile = fopen("name.txt", "r") == NULL);
{
printf("No such file\n"); //no such file is executed
return 0;
}
while (c=!EOF)
{
c = fgetc(myOpenFile);
printf("%c", c);
}
fclose(myOpenFile);
return 0;
}
myOpenFile = fopen("name.txt", "r") == NULL
将会
(myOpenFile = fopen("name.txt", "r")) == NULL
否则你将myOpenFile
的结果分配给==
,这是0
或1
。记住==
有higher precedence而不是=
。因此,在将其分配给myOpenFile
之前进行比较。
对你来说可能看起来很小的另一个重要的事情是 - fgetc
的返回值是int
而不是char
。所以int c
将在这里使用正确 - 而不是char c
。
你的c
未初始化 - 用一些值初始化然后进行比较。正如所建议的那样(melpomene)
while ((c = fgetc(myOpenFile))!=EOF)
{
printf("%c", c);
}
之前你基本上否定了值-1
(EOF)并且它是0
并且0
值被赋值给c
并且赋值表达式的结果是赋值的值0
并且0
被认为是假的 - 从不输入循环。
另请注意,之前您在分配c
时打印了EOF
的值。这不是你的意图。更正的代码应该如上所示。
你的代码中有拼写错误
if(myOpenFile = fopen("name.txt", "r") == NULL);
{
printf("No such file\n"); //no such file is executed
return 0;
}
第一行末尾的;
生成一个什么都不做的代码块。然后始终执行以下代码块。
旁白:您使用的是错误的变量类型。
char c;
应该
int c;
手册页会告诉你。别担心
printf("%c", c);
因为无论如何,char
被提升为int
。