我有一个简单的C函数,我有一个用户提供路径名,函数检查它是否是有效文件。
# include <stdio.h>
# include <string.h>
int main(void) {
char cFileChoice[256];
FILE * rInputFile;
unsigned int cFileLength;
printf("\nPlease supply a valid file path to read...\n");
fgets(cFileChoice, 255, stdin);
cFileLength = strlen(cFileChoice) - 1;
if (cFileChoice[cFileLength] == "\n") {
cFileChoice[cFileLength] = "\0";
}
rInputFile = fopen(cFileChoice, "r");
if (rInputFile != NULL) {
printf("Enter 'c' to count consonants or enter 'v' for vowels: ");
}
else {
printf("Not a valid file\n");
}
return 0;
}
只有在运行此文件后,无论文件是否为有效路径,该文件都将返回为无效。我删除了newline
字符\n
,并将其替换为null terminator
\0
但是,它仍然无法识别正确的路径。
我对C的经验非常少,而且我不知道我应该在哪里纠正这个问题?
编辑:
这些是我收到的编译警告:
test.c: In function ‘main’:
test.c:15:34: warning: comparison between pointer and integer [enabled by default]
if (cFileChoice[cFileLength] == "\n") {
^
test.c:16:34: warning: assignment makes integer from pointer without a cast [enabled by default]
cFileChoice[cFileLength] = "\0";
^
我再也不确定如何纠正这些&#34;警告&#34;?
答案 0 :(得分:3)
"\n"
和"\0"
是字符串文字("\0"
是一个特别奇怪的字符串文字,在那里)。您想要与字符文字进行比较:'\n'
和'\0'
。
您还需要一个=
,在第二次比较中您需要==
(应该与'\0'
进行比较)。