【发布时间】:2013-12-03 17:21:38
【问题描述】:
这是我的第一篇文章,所以我希望我做的一切都是正确的。 我已经搜索了谷歌和这个网站,但我找不到我想要的答案。
我正在尝试提示用户输入文件名并将此文件名输入 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;
}
我猜这与我将它放入一个字符数组有关吗?有什么方法可以用它们制作一个字符串还是别的什么?
【问题讨论】:
-
“我猜这与我将其放入字符数组有关?” -- C 不是我的强项,但我很确定字符数组 is 是 C 中的一个字符串。
-
@Brian S 请注意:在 C 中,“字符串是由第一个空字符终止并包括第一个空字符的连续字符序列。”没有
\0,字符数组就不是字符串。 -
一个迂腐的解决方案会扫描字符串,可能会跳过前导空格,寻找合法的文件名字符,然后验证字符串的其余部分是否为空格。但是,如何接受只包含空格的奇怪文件名呢?谁知道 - 或关心?