Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: cheops   (10.01.2008 в 06:46)
Хм... неприятная штука, в принципе это не противоречит стандарту - чтение завершается, если следующий символ является символом новой строки соответствующей кодировки. Судя по всему Borland-ский компилятор читает всю строку до первого первода, а дальше решает, сколько от неё откусить. Вам обязательно readline() необходимо воспользоваться? Может подойдёт метод read()?
#include <iostream.h>
#include <conio.h>

main()
{
  char buff1[4] = "   ", buff2[4] = "   ", buff3[4] = "   ";
  cin.read(buff1,3);
  cin.read(buff2,3);
  cin.read(buff3,3);

  cout<<endl<<"Billo vvedeno "<<buff1<<endl;
  cout<<endl<<"Billo vvedeno "<<buff2<<endl;
  cout<<endl<<"Billo vvedeno "<<buff3<<endl;
  getch();
  return 0;
}

Он правда менее удобен тем, что читает ровно указанное количество символов, поэтому о завершающем строку нулевом байте '\0' нужно заботиться самостоятельно, либо иницируя строки, как указано выше, либо выставляя нулевой байт вручную
#include <iostream.h>
#include <conio.h>

main()
{
  char buff1[4], buff2[4], buff3[4];
  cin.read(buff1,3);
  cin.read(buff2,3);
  cin.read(buff3,3);

  buff1[4] = '\0';
  buff2[4] = '\0';
  buff3[4] = '\0';

  cout<<endl<<"Billo vvedeno "<<buff1<<endl;
  cout<<endl<<"Billo vvedeno "<<buff2<<endl;
  cout<<endl<<"Billo vvedeno "<<buff3<<endl;
  getch();
  return 0;
}


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: