这是我的第一篇文章,所以我希望我能正确地做好一切。 我已经搜索了谷歌和这个网站,但我找不到我想要的答案。
我试图提示用户输入文件名并将此文件名输入fopen。 当我尝试运行并输入现有的文本文件(扩展名为.txt)时,我仍然遇到我的filenotfound错误消息。
到目前为止,这是我的代码(只是试图让文件立即打开):
#include <stdio.h>
main(){
int c;
FILE *file;
char filename[99];
fgets(filename, 99, stdin);
file = fopen(filename, "r");
if (file) {
while ((c = getc(file)) != EOF)
putchar(c);
fclose(file);
} else{
puts("FILE NOT FOUND");
}
return 0;
}
我猜这与我把它放入一个字符数组有关?是否有某种方法可以用它们制作一个字符串,还是其他的东西?
答案 0 :(得分:1)
fgets
()保留换行符(\ n)。你需要删除它。一种方法是改变:
fgets(filename, 99, stdin);
到
fgets(filename, 99, stdin);
char *p = strchr(filename, '\n'); // p will point to the newline in filename
if(p) *p = 0; // if p is not null, terminate filename at p