IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Ввод строки типа Pchar
сообщение
Сообщение #1


Ночной волк
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской

Репутация: -  1  +


В задаче ввод из входного потока.
Ввести 2 длинные строки.
программа<файл:
строка1
строка2

Ну я и пишу
Код

{X+}
var a,b:PChar;
    an,bn:integer;
    c:char;
    flag:boolean;
begin
{Intro}
flag:=True;
an:=0;
while flag do
begin
    read(c);
  If ord(c)=13 then
   flag:=false
  else a[an]:=c;
  inc(an);
end;
flag:=True;
bn:=1;
while flag do
begin
  read(c);
  If ord(c)=13 then
  flag:=false
  else b[bn]:=c;
  inc(bn);
end;
{/Intro}
writeln(a);
writeln(b);


readln;
end.


А как писать правильно? Как организовать ввод, если неизвестно кол-во символов?


--------------------
Не думай о белой обезьяне.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Цитата
Добавим New(р) непосредственно в процедуру - получаем:

То же самое... New для указателя PChar выделяет место под один единственный символ, прничём размер выделенной области никакими стандартными средствами изменяться не будет, т. е. p[1] уже не принадлежит выделенному блоку. Кроме того, Вы сделали утечку памяти, т. к. указатель, выделенный new(a) безвозвратно теряется.

Сообщение отредактировано: xds -


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
ammaximus   Ввод строки типа Pchar   14.11.2006 20:13
volvo   Тебе нужна процедура типа: procedure input_pchar(…   14.11.2006 21:13
xds   volvo, ты заблуждаешься: PChar - указатель на симв…   15.11.2006 0:24
volvo   Правда? И что же я написал такого, что в корне нев…   15.11.2006 0:33
xds   2 volvo Работать будет, но в корне неверно, т. к. …   15.11.2006 0:53
xds   program LongStr; uses Crt, Strings; procedure …   15.11.2006 1:15
ammaximus   Здесь Volvo ошибся, однако исправляется это просто…   15.11.2006 2:41
xds   То же самое... New для указателя PChar выделяет м…   15.11.2006 9:59
ammaximus   То же самое... [b]New для указателя PChar выделяе…   15.11.2006 17:17
xds   При чтении таким образом двух строк одна из них бу…   15.11.2006 18:25
ammaximus   Не знаю... У меня работает нормально при даже оч.…   15.11.2006 18:46
volvo   Я вводил больше 400, ты мне говоришь 127... Странн…   15.11.2006 19:52
ammaximus   Пищит на 128-й типа переполнен буфер. Возможно ош…   15.11.2006 21:15
volvo   А вообще... Я заглянул в модуль Strings... Смотри-…   15.11.2006 21:30
ammaximus   А... Strnew... Интересно... Много лишней памяти ра…   15.11.2006 21:54
xds   Ничего странного: программа, содержащая ошибки при…   15.11.2006 21:59


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 20:05
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name