Я использую код fopen
в C
, чтобы прочитать текстовый файл. Затем я использую код fscan
, чтобы проверить целое число в этом файле, которое должно быть 1 < = N < = 5.Как читать буквы в текстовом файле в C?
Что я хочу, когда текстовый файл содержит буквы внутри него, чтобы показать мне предупреждение о том, что файл имеет по крайней мере одну букву внутри. Но если он не должен перекодировать другой код.
Как я могу это сделать? Я хочу, чтобы поместить код после команды fscanf
и перед if
Вот код
FILE * fp; //declare fp as a "fopen" command.
fp = fopen ("xxx.txt", "r"); // opening the file "xxx.txt"
if (fp == NULL) // error here if there was a problem!
{
printf("Opening 'xxx.txt file failed: %s\n",strerror(errno)); // No such file or directory
getchar(); // wait the user press a key
return 0; // returning an int of 0, exit the program
}
else // if everything works.....
{
fscanf(fp,"%d",&num); // here goes the fscanf() command
if(num<1 || num>5) // set restrictions to integer
{
printf("The number must be 1<= N <= 5",strerror(errno)); // error with the integer number
getchar(); // wait the user press a key
return 0; // returning an int of 0, exit the program
}
else // if everything works.....
{
// some code here
}
}
Во-первых: проверьте возвращаемое значение 'scanf()'. – pmg
'fopen' и' fscanf' не * коды *, но * библиотечные функции *. Вы должны прочитать документацию [fopen (3)] (http://man7.org/linux/man-pages/man3/fopen.3.html) & [fscanf (3)] (http://man7.org/ linux/man-pages/man3/fscanf.3.html) - и каждой другой функции, которую вы используете, - и вы должны проверить их возвращаемое значение. Кроме того, скомпилируйте все предупреждения и информацию об отладке ('gcc -Wall -g') и используйте отладчик (' gdb') –
. Что содержит ваш файл? Будет ли у него некоторый символ, за которым следует число, за которым следуют символы или просто число? Вопрос неоднозначен. – Abhi