Работа с функцией fopen - ошибка в коде - C (СИ)
Формулировка задачи:
Подскажите, почему при компиляции выдает ошибку?
Компилирую в Code Gear 2009
#include <stdio.h>
#include <string.h>
unsigned crc16(const char *buf, unsigned len)
{
int i;
unsigned crc = 0xFFFF;
while (len--)
{
crc ^= *buf++;
for (i = 8; i--;)
{
int f = crc & 1;
crc >>= 1;
if (f) crc ^= 0xA001;
}
}
return crc;
}
int main()
{
char buf[4096];
int len;
FILE *f = fopen("C:\123.txt", "rt");
fgets(buf, sizeof buf, f);// тут выдает ошибку
len = strlen(buf);
printf("CRC-16 = %u\n", crc16(buf, len));
putchar('\n');
fclose(f);
return 0;
}Решение задачи: «Работа с функцией fopen - ошибка в коде»
textual
Листинг программы
...
FILE *f = fopen("C:\\123.txt", "rt");
if ( ! f ){
fprintf(stderr, "Can't open file!\n");
return 1;
}
...
Объяснение кода листинга программы
- Включаемые заголовочные файлы:
- stdio.h (для использования функции fopen)
- stdlib.h (для использования функции fprintf)
- errno.h (для использования переменной errno)
- unistd.h (для использования функции _exit)
- Код программы:
- Создается указатель на файл с помощью функции fopen (
C:\\123.txt,rt). Значение этого указателя сохраняется в переменной f. - Выполняется проверка на то, что файл успешно открылся с помощью оператора отрицания (!). Если файл не открылся, то выводится сообщение об ошибке с помощью функции fprintf (stderr,
Can't open file!\n). - Возвращается значение 1.
- Создается указатель на файл с помощью функции fopen (
- Переменные:
- f (указатель на файл)
- stderr (поток, куда выводится сообщение об ошибке)
- errno (переменная, содержащая код последней ошибки)
- Функции:
- fopen (открывает файл)
- fprintf (выводит сообщение на указанный поток)
- _exit (завершает выполнение программы с указанным кодом)