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

时间:2012-11-17 16:47:05

标签: c file input

我是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 个答案:

答案 0 :(得分:5)

fgets读取一行并保留最终的换行符。你必须通过

解决这个问题
text[strlen(text) - 1] = '\0';

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

答案 1 :(得分:0)

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

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

如果文件存在,

access()将返回零。

有关详细信息,请访问:http://linux.die.net/man/2/access