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

Потеря символа при копировании строки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегруженная функция в классе вектор http://www.cyberforum.ru/cpp-beginners/thread30662.html
#include <iostream> #include <vector> #include"Employe.hh" using namespace std; int main() { vector<Racine> v; //вектор объектов класса Racine
C++ Найти общую сумму 10 введенных массивов Помогите найти общую сумму 10 введеных массивов. http://www.cyberforum.ru/cpp-beginners/thread30634.html
Шаблон очереди C++
Это шаблон очереди на списках. Посмотрите, пожалуйста, в чём ошибка: #include <iostream> using namespace std; template <typename TInfo> class TQueue { protected:
C++ Проверьте лабораторную №3
Создать шаблоны функций, выполняющей ввод, вывод и упорядочивание матриц. Протестировать шаблоны для матриц с элементами различных типов: int, float и char. Варианты заданий приведены в лабораторной...
C++ error LNK2019: ссылка на неразрешенный внешний символ http://www.cyberforum.ru/cpp-beginners/thread30624.html
Вот код, неполный, решил откомпилировать - узнать, что исправить #include "stdafx.h" #include <cstdlib> #include <iostream> using namespace std; #define istr 21 struct train{ int num; char...
C++ Приведение типов Чем отличается type(x) от (type) x? подробнее

Показать сообщение отдельно
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
21.04.2009, 13:01
Цитата Сообщение от Evg
мне, как кажется, ты имеешь в виду всё-таки строковой бкффер
почему ты думаешь, что символы могут быть только буфером или только строкой ?
строка уже подразумевает символьный массив и, чтобы хранить её, без массива не обойтись, но строка имеет признак конца строки - нуль-символ
буфер - это символьный или не символьный массив, в данном случае символьный
мы можем прочитать строку в символьный массив и записать его в файл, а можем прочитать строку в символьный массив и записать её в файл
когда строка находится в символьном массиве, она там находится со своим концом в конце - нуль-символом, на него в последствии и будет реагировать функция вывода в файл

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* PrintLine: выводит строку l
              в файл ofp или в stdout, если NULL */
int PrintLine(const char *l, FILE *ofp)
{
    int res;
    
    if (l == NULL)
        return EOF;
    if (ofp == NULL)
        ofp = stdout;
    res = fprintf(ofp, "%s", l);
    return ferror(ofp) ?
               EOF : res;
}
но, пока она находится в массиве, мы можем им пользоваться, как буфером, достаточно задать ему размер, нужный для работы (чтобы при вставках не получить строку длиннее символьного массива); ну, я уже говорил что с ней можно делать - бери любую функцию и применяй, хоть полиндромы, хоть на токены раскладывай, хоть поиск проводи - всё, что нужно, для многих задач, там можно переставить слова местами, когда у тебя много функций, тебе остаётся только выбирать
когда мы закончили, мы имеем строку в символьном массиве, а буфер это не буфер (ну, пока мы с ней работали, это был буфер, а тут прекратили, стала просто строка в массиве)
и мы её

C
1
    PrintLine(line, ofp);
или на экран ещё, как у него там

C
1
2
    if (PrintLine(line, ofp) > 0)
        PrintLine(line, NULL);
http://dict.t-mm.ru/search?text=%E1%F3%F4%E5%F0
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru