Как проверять текстовый файл на корректные данные? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Размерность вводится до открытия файла.Язык СИ В книгах да и в интерене попадается одна проверка на существование файла
Листинг программы
  1. f1=fopen(nameIn,"r")) == 0
Как проверить файл на корректность данных?вот в файле матрица
Листинг программы
  1. 1 2 3
  2. 4 5 6
  3. 7 8 9
А если скажем будет буква,как это проверить?
Листинг программы
  1. 1 2 3
  2. 4 d 6
  3. 7 8 9
Ниже код работы с файлом
Листинг программы
  1. {
  2. int *masiv = (int*)malloc(sizeof(int) * (n*n));
  3. printf("\n");
  4. printf("Vvedite imy faila: ");
  5. scanf("%s",nameIn);
  6. while( (f1=fopen(nameIn,"r")) == 0 )
  7. {
  8. printf("\nError.Fail ne naiden\n");
  9. printf("\nVvedite imy faila: ");
  10. scanf("%s",nameIn);
  11. }
  12. i=0;
  13. while(fscanf(f1,"%i",&masiv[i])!=EOF)//пока не дошли до конца,увеличиваем счетчик
  14. {
  15. i++;
  16. }
  17. if( i < (n*n) || i > (n*n) ) //"странноватая проверка"====================
  18. {
  19. printf("Error.Dannye nekorektny");
  20. getch();
  21. return 0;
  22. }
  23. p=0;
  24. for(i=0;i<n;i++)
  25. {
  26. for(j=0;j<n;j++)
  27. {
  28. A[i][j]=masiv[p];
  29. p++;
  30. }
  31. }

Решение задачи: «Как проверять текстовый файл на корректные данные?»

textual
Листинг программы
  1. while ( (ret = fscanf(infile, "%d", &val)) == 1 ) ;
  2. if ( ret == 0 && !ferror(infile) )
  3.    printf("Error\n");

Объяснение кода листинга программы

  1. Проходим по файлу с помощью цикла while и функции fscanf для чтения данных из файла
  2. В каждой итерации цикла пытаемся прочитать значение из файла в переменную val с помощью формата %d
  3. Если чтение прошло успешно и значение не равно нулю, то продолжаем цикл
  4. Если чтение не прошло успешно (ferror(infile) возвращает ненулевой статус), то выводим сообщение об ошибке Error

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы