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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
#1

Добавить воскл знак в конец каждой строки в файле. - C++

10.07.2010, 00:56. Просмотров 1789. Ответов 10
Метки нет (Все метки)

С++ но с использованием функций С.
Вообщем есть такое задание. Делал давно. Вот что получилось:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
int main()
{
    int i=0;
    char str[255];
    char*str2;
    FILE*f=fopen("C:\\Программирование\\C++\\Часть 1\\Ввод-вывод\\Voskl cnak\\Read.txt","r");
    FILE*f1=fopen("C:\\Программирование\\C++\\Часть 1\\Ввод-вывод\\Voskl cnak\\Write.txt","w");
    while(!feof(f))
    {
        fgets(str,255,f);
        str2=strncat(str,"!", 1);
        fprintf(f1,"%s",str2);
        puts(str2);
    }
    return 0;
}
Все бы ничего. Добавляет и все впоряде. НО выводит в файл и на консоль он вот так:

Knyaze debilushka
!Ololo
!Axaxaxaxaxa!

В чем может быть проблема?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2010, 00:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавить воскл знак в конец каждой строки в файле. (C++):

Добавить в конец каждой строки необходимо количество «*» что бы выровнять текст по правому краю большей строки - C++
Дано некоторое количество строк, не больше как размер текстового окна. Добавить в конец каждой строки необходимо количество «*» что бы...

Добавить маркер (альфа, бетта, гамма.) в конец каждой строки - C++
Нужно добавить маркер в конце каждой строки. Маркер это символ альфа, бетта, гамма... Каким образом это сделать? #include &lt;stdafx.h&gt; ...

Добавить знак доллара после каждой цифры - C++
Всем привет, такой вопрос после каздой цифри нужно поставить $, когда текст без цифр все хорошо а когда в тексте есть цифра получаеться...

Переписать все цифры каждой строки файла в конец строки - C++
Содержимое текстового файла INPUT.TXT, разделенного на строки, переписать за один проход по файлу в текстовый файл OUTPUT.TXT, перенося при...

В конец каждой строки текстового файла дописать количество символов этой строки - C++
Помогите, нужно : &quot;В конец каждой строки текстового файла дописать количество символов этой строки&quot;. Получается только в начало, не знаю...

Добавить в конец первой строки, последние n2-n1 слов второй строки - C++
помогите пожалуйста! Даны две строки. Пусть n1 - число слов в первой строке, а n2 - во второй (n1&lt;n2). Добавить в конец первой строки,...

10
6a6kin
231 / 101 / 2
Регистрация: 18.04.2010
Сообщений: 294
10.07.2010, 01:11 #2
Есть такая отличная функция - append()
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.07.2010, 01:14  [ТС] #3
6a6ka, Видимо это С++ но с использованием функций С. я писал просто так в начале темы? Хорошо. Уточню. С использованием МЕТОДОВ С. Работа соответсвенно никак не с классом string.
0
easybudda
Модератор
Эксперт CЭксперт С++
9662 / 5611 / 952
Регистрация: 25.07.2009
Сообщений: 10,774
10.07.2010, 01:16 #4
'\0' в конце строки режется. попробуйте так:
C++
1
2
3
4
...
                fgets(str,253,f);
                str2=strncat(str,"!", 2);
...
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.07.2010, 01:21  [ТС] #5
easybudda,
C++
1
2
fgets(str,253,f);
str2=strncat(str,"!", 2);
Ноль эмоций. И на экран и в файл вывод остался одинаковым
0
6a6kin
231 / 101 / 2
Регистрация: 18.04.2010
Сообщений: 294
10.07.2010, 01:22 #6
Насколько я понял, в конце строки стоит \r и получается, что идет перевод каретки, а потом только восклицательный знак.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.07.2010, 01:24  [ТС] #7
6a6ka, М... Возможно. Как убрать, без использования флагов С++?
0
easybudda
Модератор
Эксперт CЭксперт С++
9662 / 5611 / 952
Регистрация: 25.07.2009
Сообщений: 10,774
10.07.2010, 01:35 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Lavroff, вот так читает строку и выводит её же со знаком "!"...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
 
#define MAX_LEN 255
#define TO_APPEND "!"
 
int main(void){
    char buf[MAX_LEN], * p;
    int add_chars = sizeof(TO_APPEND);
    while ( 1 ){
        fgets(buf, MAX_LEN - add_chars, stdin);
        if ( p = strrchr(buf, '\n') )
            *p = '\0';
        if ( ! *buf )
            break;
        strncat(buf, TO_APPEND, add_chars);
        printf("%s\n", buf);
    }
    
    return 0;
}
Только зачем такое в С++ нужно - никаких идей. А чем класс string не угодил?
1
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
10.07.2010, 01:36  [ТС] #9
easybudda, Не угодил тем, что это 1-я часть книги Программирование на С++. А там еще не ООП и соответственно не STL. Кстати большое спасибо. Буду разбираться в коде
0
[Freeman]
34 / 34 / 6
Регистрация: 07.06.2010
Сообщений: 118
10.07.2010, 16:21 #10
С использованием sting написал, намного проще
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
#include <iostream>
#include <string>
using namespace std;
int main()
{
    ifstream iFile("text.txt");
    ofstream oFile("outText.txt");
    string buf;
    while(!iFile.eof() && iFile.good())
    {
        getline(iFile,buf);
        buf+="!";
        oFile<<buf<<endl;
        
    }
    return 0;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9662 / 5611 / 952
Регистрация: 25.07.2009
Сообщений: 10,774
10.07.2010, 16:29 #11
[Freeman],
C++
1
2
3
4
5
6
7
...
while ( getline(iFile, buf) )
  oFile << buf << "!" << endl;
//и файлы закрывать не забываем
iFile.close();
oFile.close();
...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2010, 16:29
Привет! Вот еще темы с ответами:

Конец строки в txt файле - C++
Добрый день! Мне нужно считать значения двумерного массива. В txt файле хранятся, например, такие значения. 1 2 3 4 5 6 7 8 9 С...

Запись в конец строки в файле - C++
Ув. форумчане! Подскажите, как дописать в конец строки в файле определенные данные? Например у меня есть файл с уже забитыми данными: ...

Дана строка. Добавить в конец строки её длину - C++
Не знаю,какую команду использовать для этого, так как работа должна быть сделана через динамический массив символов. Вот фрагмент...

В конец каждой строки дописать позицию первого вхождения символа - C++
как правильно сделать что бы я мог вводить любое количество строк ,а не как у меня только на 4 строки и чтобы с этими строками работала...


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

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

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