Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Andrey_Programm
12 / 12 / 10
Регистрация: 08.04.2016
Сообщений: 206
1

Посимвольное считывание из файла - в конце строки появляется символ "Я"

19.05.2016, 11:12. Просмотров 1754. Ответов 12
Метки нет (Все метки)

Здравствуйте! Который раз сталкиваюсь с этой проблемой!
Нужно считать информацию из файла и вывести её на экран.
Всё считывает и выводит, НО в конце на экране появляется буква Я

в этом примере их появилось аж 41 шт...--- что это? почему появляется и как это подавить?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<windows.h>
#define N 250
 
 
 
int main()
{
    system("chcp 1251 > NULL");
    char len[N];
    int i=0;
    FILE *str=fopen("test.txt", "rt");
       do {
    len[i]=fgetc(str);
    fputc(len[i],stdout);
    i++;
   } while(len[i]!=EOF);
 
    
    return 0;
    
}
0
Миниатюры
Посимвольное считывание из файла - в конце строки появляется символ "Я"  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2016, 11:12
Ответы с готовыми решениями:

Посимвольное считывание строки из файла
Прошу помощи, хотелось бы считать строку из файла (в котором много строк) посимвольно и записать...

В конечном файле появляется в самом конце буква "я"
В конечном файле появляется в самом конце буква я, как убрать- не понимаю. Помогите пожалуйста ...

Прочитать из файла символьный двумерный массив, и отсортировать те строки, в которых имеется символ "/"
Снова вопрос по сортировке (просто сейчас их разбираю). Задание такое, прочитать из файла...

В конце считывания файла выводится буква "я"
Подскажите, почему у меня в конце считывания файла выводится буква я после использования вот этого...

Каждый 5-ый символ строки заменить на символ "№"
Используя библиотеку &lt;string.h&gt;

12
Andrey_Programm
12 / 12 / 10
Регистрация: 08.04.2016
Сообщений: 206
19.05.2016, 17:31  [ТС] 2
ап!
0
LFC
730 / 535 / 416
Регистрация: 17.09.2015
Сообщений: 1,598
20.05.2016, 06:35 3
Andrey_Programm, возможно в файле имеются после текста какие-то невидимые символы,попробуйте почистить там
1
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
20.05.2016, 16:14 4
C
1
2
while((len[i] = fgetc(str)) != EOF)
    fputc(len[i++],stdout);
1
20.05.2016, 16:14
Catstail
Модератор
24403 / 12339 / 2244
Регистрация: 12.02.2012
Сообщений: 20,054
20.05.2016, 16:50 5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

len нужно предварительно почистить (заполнить нулями).
2
Andrey_Programm
12 / 12 / 10
Регистрация: 08.04.2016
Сообщений: 206
23.05.2016, 13:16  [ТС] 6
retmas, ок, получилось.

Добавлено через 3 минуты
Catstail, что то не пойму как нулями заполнить пишу char len[N]={0}; в презультате ничего не меняется но после закрытия выдает ошибку памяти
0
Catstail
Модератор
24403 / 12339 / 2244
Регистрация: 12.02.2012
Сообщений: 20,054
23.05.2016, 13:37 7
C
1
  for (i=0; i<N; i++) len[i]=0;
0
Andrey_Programm
12 / 12 / 10
Регистрация: 08.04.2016
Сообщений: 206
23.05.2016, 14:17  [ТС] 8
Catstail, абсолютно также что и char len[N]={0}...... и все яzzzzz остались даже больше стало
0
Andrey_Programm
12 / 12 / 10
Регистрация: 08.04.2016
Сообщений: 206
23.05.2016, 14:22  [ТС] 9
вот скрин
0
Миниатюры
Посимвольное считывание из файла - в конце строки появляется символ "Я"  
Andrey_Programm
12 / 12 / 10
Регистрация: 08.04.2016
Сообщений: 206
23.05.2016, 14:44  [ТС] 10
retmas, Ваш код верный но не пойму в чём ошибка в моём, вроде делаю то то же самое и конец файла определя. откуда он берёт эти символы подскажите.

Добавлено через 16 минут
О я понял. я считываю не тот элемент. вот переписал код,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<windows.h>
#include<string.h>
#define N 250
 
 
 
int main()
{
    system("chcp 1251 > NULL");
    char len[N];
    int i=-1;
    FILE *str=fopen("test.txt", "rt");
       do {
    i++;
    len[i]=fgetc(str);
    fputc(len[i],stdout);
    
   } while(len[i]!=EOF);
    return 0;
}
но в конце одна Я опять осталась... откуда она возникает?
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
23.05.2016, 15:58 11
Лучший ответ Сообщение было отмечено Andrey_Programm как решение

Решение

проверка конца файла идет после вывода, а не до

Не по теме:

а вообще не понятна поголовная мания среди новичков к использованию циклов do-while, а не while

1
Andrey_Programm
12 / 12 / 10
Регистрация: 08.04.2016
Сообщений: 206
23.05.2016, 16:35  [ТС] 12
retmas, это итак понятно, но конструкция
C
1
2
3
4
5
6
  i=-1
  while(len[i]!=EOF) {
    i++;
    len[i]=fgetc(str);
    fputc(len[i],stdout);
    } ;
тоже не катит в конце одна Я выдается.
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
23.05.2016, 16:44 13
Лучший ответ Сообщение было отмечено Andrey_Programm как решение

Решение

алгоритм:
читаем-проверяем-пишем, читаем-проверяем-пишем... вот и весь цикл. что у вас?
Цитата Сообщение от Andrey_Programm Посмотреть сообщение
C
1
2
3
4
5
while(len[i]!=EOF) {      // проверяем предыдущее значение в массиве(кстати откуда оно взялось при первом заходе в цикл?)
    i++;                  // идем к следующему элементу массива
    len[i]=fgetc(str);    // читаем в него
    fputc(len[i],stdout); // выводим его
};
1
23.05.2016, 16:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2016, 16:44

Непонятный символ в конце строки при чтении файла
всем привет) подскажите, пожалуйста:) когда я считываю строку из файла(txt), то в конце появляется...

Посимвольное считывание файла
Почему вместе с символами, записанными в файле, считываются какие-то еще? int i=0,n,sum; char*...

Посимвольное считывание файла
Как считать файл посимвольно? Файл состоит из 1-й строки и включает в себя цифры разделённые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru