4

我完全是 C 的菜鸟,我想知道为什么如果我接受用户输入,为什么它不会找到文件,但是当我使用以下方式对其进行硬编码时:

const char * fn = "/Users/james/Documents/test.rtf";

它似乎工作正常?

char text[100];
fputs("File location: ", stdout);
fflush(stdout); 
fgets(text, sizeof text, stdin);

FILE *fp = fopen(text,"r");
if( fp ) {
    printf("\nFile Exists");
    fclose(fp);
} else {
    printf("\nFiles doesn't exist");
}

任何帮助都会很棒,或者只是指向一些我显然无法找到的在线资源。:)

4

2 回答 2

5

fgets读取一行并保留最后的换行符。你必须把它去掉

text[strlen(text) - 1] = '\0';

(当然,在进行正确的错误检查之后。)

于 2012-11-17T16:49:42.377 回答
0

您可以使用 access() 检查文件是否存在对于访问,您需要提供文件的路径和模式。

访问的原型是 int access(const char *pathname, int mode);

如果文件存在,access() 返回零。

欲了解更多信息,请访问: http: //linux.die.net/man/2/access

于 2012-12-18T09:20:00.957 回答