如何要求用户输入文件名作为输入文件?

时间:2013-11-19 22:43:24

标签: c file file-io input

这是我的第一篇文章,所以我希望我能正确地做好一切。 我已经搜索了谷歌和这个网站,但我找不到我想要的答案。

我试图提示用户输入文件名并将此文件名输入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;
}

我猜这与我把它放入一个字符数组有关?是否有某种方法可以用它们制作一个字符串,还是其他的东西?

1 个答案:

答案 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