т.е., если первая переменная(a) при чтении файла имеет тип стринг, то данные с файла в переменную будут читаться не до пробела, а до конца строки. провел ни один эксперимент уже
Добавлено через 10 мин.
Цитата(sheka @ 20.09.2010 23:22)
проблема в том, что в таком случае надо точно знать какое количество символов отводится на <string>. Т.е:
т.е., если первая переменная(a) при чтении файла имеет тип стринг, то данные с файла в переменную будут читаться не до пробела, а до конца строки.
Разумеется. Потому что строка из файла читается 1) либо до тех пор, пока выделенное под нее место не будет заполнено полностью 2) либо пока не встретится #13(символ конца строки). Всё, больше ничего. Пробел концом строки не является.
Вообще-то это один из первых советов при работе с текстовыми файлами: не использовать смешанные списки ввода. Нужно читать в строку до пробела - читай посимвольно (Char-ом) и соединяй символы в строку.
Цитата
проблема в том, что в таком случае надо точно знать какое количество символов отводится на <string>
Проблема - в том, что при ЧТЕНИИ нельзя указывать ширину поля, только при ЗАПИСИ это возможно.
Автор: doorway 21.09.2010 2:49
есть файл из 10 строк, где записаны в строке фамилию год пол
так вот эти данные надо считать и сравнить людей по годам, я собирался считать циклом каждую часть строки в двумерный массив. в один стринговый массив фамилию, в другой целый год, и в чарный пол. вот загвоздка на том, что первая идет фамилия стринговый тип и считывает всю строку.
Автор: Unconnected 21.09.2010 2:55
Читай по строке в string, а потом эту строку разбивай на фамилию, год и пол, с помощью функций copy и pos.
Автор: doorway 21.09.2010 4:17
Цитата(Unconnected @ 20.09.2010 23:55)
Читай по строке в string, а потом эту строку разбивай на фамилию, год и пол, с помощью функций copy и pos.
впринципе можно. а как получится, год же должен быть интегер
Может, не после, а вместо? Потому что в Паскале нет форматного read (как тебе уже говорил volvo). Строка читается до конца. Сообщение, я согласен, не очень точное - там может быть и запятая..
Автор: doorway 22.09.2010 20:07
Цитата(Lapp @ 22.09.2010 2:12)
Может, не после, а вместо? Потому что в Паскале нет форматного read (как тебе уже говорил volvo). Строка читается до конца. Сообщение, я согласен, не очень точное - там может быть и запятая..
а если надо считать строку только первые 15 символов?
Автор: volvo 22.09.2010 20:57
doorway, ответы надо не просматривать, а читать. Внимательно читать.
Цитата
а если надо считать строку только первые 15 символов?
И об этом я тоже написал. Повторять как-то не особо хочется. Ибо не факт, что ты соизволишь прочесть со второй попытки.
Автор: sheka 23.09.2010 2:35
Виноват. Забыл. Хотел написать следующее:
var a:string[15]; b: integer; c: char; k: byte; // ... read(f, a, b, c);
Автор: volvo 23.09.2010 2:41
Ответ неверный В C будет совсем не то, что ты ожидаешь
Автор: sheka 23.09.2010 3:11
Дык я не обращал внимание на это, ведь о строке думал :yes: Согласен, там будет пробел, верно?
var a:string[15]; b: integer; c: char; k: byte; // ... read(f, a, b, c, с);
Автор: Lapp 23.09.2010 3:16
Цитата(sheka @ 23.09.2010 0:11)
Дык я не обращал внимание на это, ведь о строке думал :yes: Согласен, там будет пробел, верно?
var a:string[15]; b: integer; c: char; k: byte; // ... read(f, a, b, c, с);
А ты попробуй
Автор: sheka 23.09.2010 3:24
Уже не могу) если смотреть на структуру
Цитата
фамилию год пол
, то должно работать. Разве что на Реадлн заменить.
Автор: Lapp 23.09.2010 3:37
перечитай пост №7
Автор: Lapp 23.09.2010 9:32
sheka, извини, очередное ВПР, временное помутнение рассудка ((. Все верно. При условии, что "фамилию" занимает ровно 15 байт. Но чтение всей строки с последующим разбором все же предпочтительнее со многих точек зрения.