У меня есть простая функция 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, и я не уверен, где я должен искать исправление?
EDIT:
Это компиляция предупреждения, которые я получил:
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";
^
Опять я не знаю, как исправить это "предупреждение"?
Компиляция с включенными предупреждениями. У вас их будет немало. Вернитесь после того, как вы их исправили. –
@ H2CO3 Я отправил компиляционные предупреждения, но я не уверен, как их исправить. – tijko
попробуйте одинарные кавычки ... –