Ошибка при попытке открытия для чтения текстового файла - C (СИ)
Формулировка задачи:
Первоначальная задача была такова:
Дан файл А, компоненты которого являются целыми числами. Записать в файл А1 все повторяющиеся числа файла А, а в файл А2 – числа, которые встречаются один раз. Порядок следования чисел сохраняется.
Создал программу для решения первой половины задачи таким образом: создаётся таблица-структура с двумя колонами, в первой - число, во второй - кол-во его повторений. Сначала программа читает исходный файл и заполняет в соответствии с ним таблицу. (Во второй только остаётся записать все числа с 0 кол-вом повторов в один файл, а с не нулевым - в другой).
Исходный код:
При попытке запуска получаю ошибку:
Понимаю прекрасно, что скорее всего получился быдлокод, поэтому кроме советов по решению непосредственно этой проблемы, если кому не трудно, не отказался бы от общих советов по упрощению реализации конкретно этого кода, так и, если ошибки очень грубые, примерную схему как решить эту задачу проще совсем другим образом.
# include <stdio.h> # include <conio.h> # include <string.h> #define _CRT_SECURE_NO_WARNINGS struct povtory { char chislo[10]; int colichestvo; }; void main () { char buffer[10], pusto[10]; char *eof="EOF"; struct povtory mas[20]; int i,b; FILE *A, *A1, *A2; A = fopen("D:\RBF\Input.txt", "r+t"); do { fscanf (A, "%s", buffer); for (i=0; i<=20; i++) // Пункт 1 - общий цикл проверки { if (strcmp(buffer, mas[i].chislo)==0) // если число повторяется в конкретной записи, то в колонке "colichestvo" сооветствующей строки прибавляем 1 { mas[i].colichestvo++; i=20; } else // если не повторяется в конкретной записи, то проверяем, не является ли оно EOF и если нет убеждаемся что оно не повторитя в других строках, для чего: { if (strcmp(buffer, eof)!=0) { if (i==20) // проверяем, сканировали ли все строки структуры, если нет возвращаемся к Пункту 1, если да: for (b=0; b<=20; b++) // цикл поиска первой пустой строки в таблице-структуре и записи в неё нового, не повторявшегося нигде в таблице, числа { if (strcmp(mas[b].chislo, pusto)==0) strcpy(mas[b].chislo, buffer); } } } } } while (strcmp(buffer, eof)!=0); }
Решение задачи: «Ошибка при попытке открытия для чтения текстового файла»
textual
Листинг программы
while (strchr(buffer, EOF)==0);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д