如何在C语言中检查用户输入的文件是否存在

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");
}

任何帮助都将是非常棒的,或者只是指向一些我显然无法找到的在线资源的指针。 :)
2个回答

5

fgets函数读取一行并保留末尾的换行符。你需要通过代码去掉这个换行符。

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

(当然,在进行适当的错误检查后。)

非常感谢,我之前在某个地方也看到过这个,但是上下文略有不同,现在至少我知道了。我会在3分钟内将您标记为正确的答案 :) - James

0

你可以使用access()函数来检查文件是否存在。

对于access()函数,你需要提供文件路径和模式。

access()函数的原型是: int access(const char *pathname, int mode);

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接