При выводе из файла добавляется лишний символ - 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
сбрасывается на ноль.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д