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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа со строками 
V
    Опции темы
Артем125
Дата 11.11.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Почему-то копирует только одну строку, а в потоке допустим 5 строк
Код

const int b_n = 70;
    char buf[b_n];

    const int n = 1000;
    char * s = new char[n];
 
    while (fgets(buf,b_n,fi))
    {
        strncpy(s,buf,b_n);
    }
    std::cout << s;
    delete []s; 


Это сообщение отредактировал(а) Артем125 - 11.11.2009, 13:38
PM MAIL   Вверх
bsa
Дата 11.11.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



причем только последнюю, да?  smile 
попробуй использовать strncat вместо strncpy.
PM   Вверх
Артем125
Дата 11.11.2009, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну в общем то пробовал, только в начале появляется то что в приложении, хотя если в цикле использовать std::cout << buf то выводит как надо 4 строки, и не пойму откуда мусор и что это такое

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  ___.JPG 41,91 Kb
PM MAIL   Вверх
bsa
Дата 11.11.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Артем125, перед циклом вставь строку: *s = '\0';
PM   Вверх
Dov
Дата 11.11.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(Артем125 @  11.11.2009,  12:50 Найти цитируемый пост)
и не пойму откуда мусор и что это такое

Цитата
char * s = new char[n]();





--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
bsa
Дата 11.11.2009, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Dov, отличное предложение. В данном случае необходимо чтобы только в начале строки был нулевой символ... А ты предлагаешь всю занулить.


Артем125, раз на С++ пишешь, может стоит обратить внимание на std::string, std::istream, std::getline?
Код
std::string s;
std::string buf;
std::ifstream fi("myfile.txt");
while( std::getline(fi, buf) )
   s += buf;
std::cout << s << std::endl;

PM   Вверх
Артем125
Дата 11.11.2009, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо Вам друзья, 


а помогло *s = '\0'; Получается что функция strncpy присоединяет только к строки если она не пуста?
PM MAIL   Вверх
bsa
Дата 11.11.2009, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



strncpy вообще ничего никуда не присоединяет. Она копирует одну строку в другую. Читай внимательно документацию.

Добавлено через 35 секунд

M
bsa
Артем125, если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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