Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вставка знака восклицания после каждого 4 го 
:(
    Опции темы
CWD
Дата 11.3.2013, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2011

Репутация: нет
Всего: нет



Добрый день, хотелось написать программу которая считает текст с одного файла, и запишет в другой вставляя после каждого 4 го символа знак "!". Работает не верно, выдает результат AAA!AAAA!AAAA!AAAA!Aя из текста AAAAAAAAAAAAAAAA. Не понятно почему и откуда берется буква "я"?

Код

#include <stdio.h>
#include <iostream>
#include <fstream>

using namespace std;

 
int main()
{
    int Iterator=1;
    char text;
    int number;
    setlocale(LC_ALL,"Eng");
        FILE *in_file=fopen("file.txt","r"); 
    FILE *out_file=fopen("out.txt","w");
    while (!feof(in_file))
    {    
        text = getc(in_file);
        Iterator++;
        if ((Iterator%4)==0) {putc('!',out_file); putc(text,out_file);} else {putc(text,out_file);}
    }
    return 0;
}

PM MAIL   Вверх
Crafty
Дата 11.3.2013, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 319
Регистрация: 3.11.2008

Репутация: 12
Всего: 14



Код

#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    int Iterator=1;
    char text;
    int number;
    setlocale(LC_ALL,"Eng");
    FILE *in_file=fopen("file.txt","r"); 
    FILE *out_file=fopen("out.txt","w");
    while (!feof(in_file))
    {    
        text = getc(in_file);
        if (!feof(in_file)) 
        {
            putc(text,out_file);
            if ((Iterator%4)==0) 
            {
                putc('!',out_file); 
            } 
        }
        Iterator++;
    }
    fclose(out_file);
    fclose(in_file);
    return 0;
}


Цитата

Не понятно почему и откуда берется буква "я"?

Цитата

Notice that stream's internal position indicator may point to the end-of-file for the next operation, but still, the end-of-file indicator may not be set until an operation attempts to read at that point.

feof()

Это сообщение отредактировал(а) Crafty - 11.3.2013, 23:58
PM MAIL   Вверх
volatile
Дата 12.3.2013, 00:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(CWD @  11.3.2013,  23:09 Найти цитируемый пост)
#include <iostream>
#include <fstream>

using namespace std;


Зачем здесь нужны эти включения из другого языка?
PM MAIL   Вверх
bsa
Дата 12.3.2013, 09:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(CWD @  12.3.2013,  00:09 Найти цитируемый пост)
Не понятно почему и откуда берется буква "я"?

Буква "я" у тебя появляется из-за того, что ты считываешь признак конца файла (EOF) в переменную типа char. В итоге -1 обрезается и получается ASCII код 255, который в кодировке Windows-1251 присвоен букве "я". Чтобы этого не было, необходимо читать в переменную типа int, проверять на равенство EOF, и если не равно, конвертировать в char и выводить.

Добавлено через 1 минуту и 14 секунд
feof() срабатывает только ПОСЛЕ получения кода EOF из файла. А после чтения последнего символа из файла эта функция все еще возвращает 0.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.