Записать строки, введенные с клавиатуры в массив
Добавлено: 08.12.2009 19:14:55
Здравствуйте, коллеги! Нужен совет. С паскалем знаком только в рамках университетской практики. Нужна функция, которая бы считывала строки, введенные с клавиатуры и записывала бы их в массив. Я написал ее так:
На моем ноутбуке стоит Slackware 13 и программа работает как полагается в str записываются строки и возвращается кол-во считанных строк. Функция getlines завершает свою работу по нажатии Ctrl+D. Однако на Ubuntu 9.04, после компиляции этого же кода при нажатии Ctrl+D символ конца файла не генерируется, появляется квадратик и работа функции продолжается. С чем это может быть связано? И еще, если в цикле getlines вместо readln поставить read, то при запуске получаем Runtime Error. Почему я не могу использовать read в этом случае?
- Код: Выделить всё
program Project1;
var
str: array [0..1000] of string;
n,i: integer;
// getlines: считывает введенные с клавиатуры строки,
// записывает их в массив str и возвращает количество
// считанных строк.
function getlines(var str: array of string): integer;
var
i: integer; // Счетчик строк
begin
i := 0; // Инициализация счетчика
// Пока не достигнут конец файла считываем следующую
// строку и увеличиваем счетчик.
while not eof(input) do
begin
readln(str[i]);
inc(i);
end;
// Возвращаем количество считанных строк
getlines := i;
end;
begin
n := getlines(str);
writeln('Количество строк: ', n);
writeln('Массив строк:');
for i := 0 to n do
writeln(str[i]);
end.
На моем ноутбуке стоит Slackware 13 и программа работает как полагается в str записываются строки и возвращается кол-во считанных строк. Функция getlines завершает свою работу по нажатии Ctrl+D. Однако на Ubuntu 9.04, после компиляции этого же кода при нажатии Ctrl+D символ конца файла не генерируется, появляется квадратик и работа функции продолжается. С чем это может быть связано? И еще, если в цикле getlines вместо readln поставить read, то при запуске получаем Runtime Error. Почему я не могу использовать read в этом случае?