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

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

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

Убрать "\n" из строки - C++

27.06.2014, 15:57. Просмотров 297. Ответов 3
Метки нет (Все метки)

Сначала я записываю в файл массив структур в цикле
C++
1
2
3
for (int i = 0; i < ttl; i++) {
        fprintf(f, "%s\n%s\n%s\n", film[i].name, film[i].genre, film[i].year);
    }
Далее мне нужно сканировать этот файл и вывести в консоль:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            while (fgets(buf, max, f) != NULL) {
                if (j < 3) {
                    if (j == 0) {
                        film[i].name = new char[strlen(buf)];
                        strcpy(film[i].name, buf);
                        
                    }
                    if (j == 1) {
                        film[i].genre = new char[strlen(buf)];
                        strcpy(film[i].genre, buf);
                    }
                    if (j == 2) {
                        film[i].year = new char[strlen(buf)];
                        strcpy(film[i].year, buf);
                    }
 
                    j++;
                }
                else {
                    i++;
                    j = 0;
                }
            }
Проблема в том, что в памяти остается "\n", т.е. film[i].name, например, содержит "Название фильма\n" и при последующей записи в файле образуется пустая строка из за двух \n. Как решить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2014, 15:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Убрать "\n" из строки (C++):

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

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

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Найти номер последней по порядку строки в матрице, содержащей наибольшее количество букв "ш", "щ" - C++
Нужен код к этому условию, пожалуйста. Дана символьная матрица размера 13х18. Найти номер последней по порядку строки,содержащей...

Даны две строки. Если они начинаются с одинаковых символов, то напечатать "ДА", иначе - "НЕТ" - C++
Даны две строки. Если они начинаются с одинаковых символов, то напечатать &quot;ДА&quot;, иначе - &quot;НЕТ&quot;. (5)

Сколькими способами можно получить строку "В" из строки "А", вычеркивая некоторые символы - C++
)заданы 2 символьные строки А и Б . Требуется вычислить сколькими способами можно получить строку В из строки А, вычеркивая некоторые...

3
FraidZZ
Ex-Member
3898 / 1524 / 229
Регистрация: 06.01.2013
Сообщений: 4,050
Завершенные тесты: 1
27.06.2014, 16:28 #2
C++
1
film[i].name[strlen(film[i].name) - 2] = '\0';
Как костыль.

А в идеале
C++
1
for (int n = 0; i < strlen(film[i].name); ++i) if (film[i].name[n] == '\n') film[i].name[n] = ' ';
0
zss
Модератор
Эксперт С++
6484 / 6047 / 1985
Регистрация: 18.12.2011
Сообщений: 15,679
Завершенные тесты: 1
27.06.2014, 16:29 #3
Читайте через
C++
1
fscanf(file,"%s",buf);
тогда \n будут пропускаться.
0
FraidZZ
Ex-Member
3898 / 1524 / 229
Регистрация: 06.01.2013
Сообщений: 4,050
Завершенные тесты: 1
27.06.2014, 16:29 #4
Но добавляет пробелы.
0
27.06.2014, 16:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 16:29
Привет! Вот еще темы с ответами:

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Перегрузить операторы "=", "+=" так, чтобы производилось сложение строки и объекта - C++
помогите ,пожалуйста вот задание:Реализовать класс String для работы со строками символов. Перегрузить операторы =, += так, чтобы...


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

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

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