Как проверять текстовый файл на корректные данные? - C (СИ)
Формулировка задачи:
Размерность вводится до открытия файла.Язык СИ
В книгах да и в интерене попадается одна проверка на существование файла
Как проверить файл на корректность данных?вот в файле матрица
А если скажем будет буква,как это проверить?
Ниже код работы с файлом
f1=fopen(nameIn,"r")) == 0
1 2 3 4 5 6 7 8 9
1 2 3 4 d 6 7 8 9
{
int *masiv = (int*)malloc(sizeof(int) * (n*n));
printf("\n");
printf("Vvedite imy faila: ");
scanf("%s",nameIn);
while( (f1=fopen(nameIn,"r")) == 0 )
{
printf("\nError.Fail ne naiden\n");
printf("\nVvedite imy faila: ");
scanf("%s",nameIn);
}
i=0;
while(fscanf(f1,"%i",&masiv[i])!=EOF)//пока не дошли до конца,увеличиваем счетчик
{
i++;
}
if( i < (n*n) || i > (n*n) ) //"странноватая проверка"====================
{
printf("Error.Dannye nekorektny");
getch();
return 0;
}
p=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
A[i][j]=masiv[p];
p++;
}
}Решение задачи: «Как проверять текстовый файл на корректные данные?»
textual
Листинг программы
while ( (ret = fscanf(infile, "%d", &val)) == 1 ) ;
if ( ret == 0 && !ferror(infile) )
printf("Error\n");
Объяснение кода листинга программы
- Проходим по файлу с помощью цикла while и функции fscanf для чтения данных из файла
- В каждой итерации цикла пытаемся прочитать значение из файла в переменную val с помощью формата
%d - Если чтение прошло успешно и значение не равно нулю, то продолжаем цикл
- Если чтение не прошло успешно (ferror(infile) возвращает ненулевой статус), то выводим сообщение об ошибке
Error