При выводе из файла добавляется лишний символ - C (СИ)
Формулировка задачи:
Есть содержимое файла:
Код выводит это содержимое в таком виде:
Откуда берется эта проклятая буква "я"? Она создает дополнительную строку, дополнительный символ, который просто не дает мне дальше работать с программой, помогите, пожалуйста
Листинг программы
- 12345
- Once I caught a fish alive
- 45678910
- Then I let it go again
- 111213314
Листинг программы
- 12345
- Once I caught a fish alive
- 45678910
- Then I let it go again
- 111213314
- я
Листинг программы
- #define N 5
- #define M 45
- int main()
- {
- setlocale(LC_ALL,"Russian");
- char ch[N][M];
- int i = 0, j = 0, d = 0, max = 0, k, m, c, k2, m2;
- FILE *file;
- file = fopen("c:\\1text.txt","r");
- while (!feof(file))
- {
- ch[i][j] = getc(file);
- putchar(ch[i][j]);
- if (ch[i][j] != '\n')
- j++;
- else
- {
- i++;
- j = 0;
- }
- }
- fclose(file);
- printf ("\n");
- }
Решение задачи: «При выводе из файла добавляется лишний символ»
textual
Листинг программы
- while (1)
- {
- if((ch[i][j] = getc(file)) == EOF)
- break;
- putchar(ch[i][j]);
- if (ch[i][j] != '\n')
- j++;
- else
- {
- i++;
- j = 0;
- }
- }
Объяснение кода листинга программы
В данном коде выполняется чтение из файла посимвольно и его вывод на экран.
При этом, если текущий символ не является символом новой строки, то он выводится на экран, а значение переменной j
увеличивается на единицу.
Если текущий символ является символом новой строки, то значение переменной i
увеличивается на единицу, а значение переменной j
сбрасывается на ноль.
Данный процесс повторяется до тех пор, пока из файла не будет достигнут конец.
- Объявлены две массивы символов
ch[i][j]
. - В условии цикла
while (1)
выполняется проверка на условиеbreak
. - В каждой итерации цикла происходит чтение символа из файла с помощью функции
getc(file)
и его сохранение в массивеch[i][j]
. - Выводится символ из массива
ch[i][j]
с помощью функцииputchar()
. - Если символ не является символом новой строки, то значение переменной
j
увеличивается на единицу. - Если символ является символом новой строки, то значение переменной
i
увеличивается на единицу, а значение переменнойj
сбрасывается на ноль.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д