Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
aleksandr_t94
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 100
#1

Выводи лишних символов в файл - C++

29.03.2013, 11:03. Просмотров 416. Ответов 3
Метки нет (Все метки)

Не знаю почему, но в файл печатаются лишнbе символы 'H', а на экран нормально всё выводится.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include <string.h>
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int size, result, i, j;
    FILE *in, *out;
    char *b, *c;
 
    in = fopen("in.txt","rb");
    if(in==NULL) exit(1);
    out = fopen("out.txt","wb");
    if(out==NULL) exit(1);
 
    /*Посчитали сколько нужно будет байт*/
    fseek (in, 0, SEEK_END);
    size = ftell(in);
    fseek (in, 0, SEEK_SET);//вернулись в начало
 
    /*Выделили память под заполнение*/
    b = (char *)malloc(size);
    if(b==NULL) exit(1);
    c = (char *)malloc(size);
    if(c==NULL) exit(1);
 
    /*Считали всё из файла*/
    result = fread(b,1,size,in);
    if(result!=size) exit(1);
    
    for(i=0, j=0; i<size; i++, j++) 
    {    
        if(b[i]==13 && b[i+1]==10)i=i+1;
        else {c[j]=b[i];printf("%c",c[j]);}
    }
 
 
    fwrite(c, 1, size, out);
    free(c);
    free(b);
 
    fclose(in);
    fclose(out);
 
    return 1;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2013, 11:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выводи лишних символов в файл (C++):

Считать файл в массив без лишних символов - C++
здравствуйте. нужна правильная реализация задачи: на вход подается файл, примерное содержание - &quot;Hello, username! etc. etc.&quot; на...

Удаление лишних символов - C++
Имеется файл txt.txt в котором 50 000 строк, просто физически это обработать тяжело. Нужно удалить все эти знаки ( ) | и 0. (Левая...

Вывод лишних символов в строке - C++
Добрый день! Мне нужно решить простую задачу на множественное наследование классов (код приведен ниже). Задачу я решил, наследование...

Как избавиться от лишних символов в строке - C++
Помогите,пожалуйста.Битый час ломаю голову. Почему строку p выводит с заколючками? int main() { setlocale(LC_ALL, &quot;Russian&quot;);...

Вывод массива char без лишних символов - C++
В коде имеется массив, объявленный: char text; далее в коде следует вывести значение массива на данный момент cout &lt;&lt; text &lt;&lt; &quot; = &quot;...

Проблемы с программой (вывод лишних символов из данных вне массива) - C++
Прошу скорее помочь с программой. Выводит лишние неведомые символы. Почему это происходит мне известно, однако где и как с этим бороться -...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
29.03.2013, 11:43 #2
C++
1
2
if(b[i]==13 && b[i+1]==10)i=i+1;
        else
Что делает эта конструкция? Если её убрать, всё нормально работает.
Алсо, в конце программы должно быть return 0.
0
aleksandr_t94
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 100
29.03.2013, 11:48  [ТС] #3
Цитата Сообщение от fjay69 Посмотреть сообщение
C++
1
2
if(b[i]==13 && b[i+1]==10)i=i+1;
        else
Что делает эта конструкция? Если её убрать, всё нормально работает.
Алсо, в конце программы должно быть return 0.
Суть программы убрать перевод строки и записать в файл. Собственно эта строчка и отвечает за то, чтобы не записывать их в новый массив C
0
fjay69
85 / 85 / 1
Регистрация: 26.10.2012
Сообщений: 248
29.03.2013, 12:09 #4
Значит надо i=i+2. Мы же два символа пропускаем. Алсо, j надо уменьшить на 1.
C++
1
2
if(b[i]==13 && b[i+1]==10)
i=i+2;--j;
Добавлено через 8 минут
{i=i+1;--j;size-=2}

Добавлено через 3 минуты
Про size это я погорячился. На самом деле нужно править
fwrite(c, 1, size+j-i, out);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2013, 12:09
Привет! Вот еще темы с ответами:

printf не выводи данные вне цикла. - C++
Здравствуйте! Проблема состоит в том,что если printf стоит внутри какого-нибудь цикла,то данные выводятся нормально,но если этот printf...

Дан входной текстовый файл. Заполните Выходной файл только теми строками, в которых ровно k символов ch - C++
Дан входной текстовый файл. Заполните Выходной файл только теми строками, в которых ровно k символов ch

Написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент положительных и отрицательных чисел и процент нулей и выводи - C++
помогите =) написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент положительных и отрицательных чисел и...

Запись массива символов в файл - C++
Здравствуйте! А кто знает как записать массив символов, имеющий пробелы, в файл, а потом его считать и вывести на экран? Подробнее: -...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.03.2013, 12:09
Ответ Создать тему
Опции темы

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