Добрий день уважаемые експерты. У меня следующая проблема: я пишу курсак на "С" и мне нада прочитать файл по строкам и загнать ево в структуру допустим: struct a {char a1[100]; char a2[100]; char a3[100]; } t[10]; мне нада: {.................} for(i=0;i<10;i++) {fscanf(file,"%S",&t[i].a1); fscanf(file,"%S",&t[i].a2); fscanf(file,"%S",&t[i].a3); } /////////////////////////// // короче нада шоб оно читало в каждый string одну строку файла /////////////////////////// проблема вот в чом: мне нада шоб в string заганяла целою строку а оно какогото чорта перескакивает на следуючий string если доходит до " " (пробела), аналогично когда строка пустая "" P.S. нада написать сугубо на "С" ("с++" прошу
непридлагать) спасибо за внимание
Приветствую Вас, ol! используй функцию fgets вместо fscanf. Ответ отправлен: 07.08.2003, 15:22 Отправитель: vitya Отвечает Avl2k
Добрый день, ol! %s считывает символы до первого "пробельного" символа (пробел, табуляция, перевод строки). Попробуйте так - должно работать: fscanf(file,"%[^\r\n]",&t[i].a1); С уважением, Avl2k. Ответ отправлен: 07.08.2003, 17:30 Отправитель: Avl2k Отвечает RedFox
Приветствую Вас, ol! Учи, как говориться, матчасть. По умолчанию, для функций семейства scanf пробел является символом разделителя полей. Чтобы прочитать строку целиком из файла можно: 1. Воспользоваться функцией fgets (т.е.) заменив вызовы fscanf на fgets(t[i].a1, 100, file); . Однако в этом случае, символ перевода строки ('
') будет включен в строку. 2. Использовать функцию read для чтения из файла блоков данных в отведенный буфер, а затем самому выделять из этого буфера строки.
Ответ отправлен: 07.08.2003, 17:12 Отправитель: RedFox
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.