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

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

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

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

27.06.2014, 15:57. Просмотров 238. Ответов 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. Как решить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2014, 15:57     Убрать "\n" из строки
Посмотрите здесь:

C++ Как убрать контуры вокруг дерева "treeView"?
C++ Как убрать привилегии системы? Почему GetUserName всегда возвращает "SYSTEM"?
C++ Что такое "широкие" и "узкие" С-строки
C++ Убрать переход на новую строку после "cin"
C++ Игра "Борьба за жизнь". Цель игры – убрать с доски все шашки противника
Определить длину каждого слова строки, и если она четная, то вставить в середину слова "aa", иначе "а" C++
Класс "Книга". Как убрать каракули? C++
Не могу убрать ошибку: "error LNK2001: неразрешенный внешний символ" C++
Проверяю, являются ли 4 строки стихом. "й" принимает за "и", тем самым принимает за слог C++
C++ Убрать вывод фразы "Для продолжения нажмите любую клавишу" по окончании работы программы
Перегрузить операторы "=", "+=" так, чтобы производилось сложение строки и объекта C++
Программа,где надо убрать эти "::" знаки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FraidZZ
Модератор
3896 / 1522 / 229
Регистрация: 06.01.2013
Сообщений: 4,049
Завершенные тесты: 1
27.06.2014, 16:28     Убрать "\n" из строки #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] = ' ';
zss
Модератор
Эксперт С++
6193 / 5796 / 1877
Регистрация: 18.12.2011
Сообщений: 14,813
Завершенные тесты: 1
27.06.2014, 16:29     Убрать "\n" из строки #3
Читайте через
C++
1
fscanf(file,"%s",buf);
тогда \n будут пропускаться.
FraidZZ
Модератор
3896 / 1522 / 229
Регистрация: 06.01.2013
Сообщений: 4,049
Завершенные тесты: 1
27.06.2014, 16:29     Убрать "\n" из строки #4
Но добавляет пробелы.
Yandex
Объявления
27.06.2014, 16:29     Убрать "\n" из строки
Ответ Создать тему
Опции темы

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