Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 327
от 10.08.2003, 15:20

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 990
Отправлено ответов: 2216
Активность: 223.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

vitya
Статус: Профессиональный
Общий рейтинг: 108.04
[Подробней >>]
Avl2k
Статус: Профессиональный
Общий рейтинг: 125.46
[Подробней >>]
RedFox
Статус: Доверительный
Общий рейтинг: 104.95
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 981. Добрий день уважаемые експерты. У меня следующая проблема: я пишу курсак на "С" и мне над... (ответов: 3)

Вопросов: 1, ответов: 3


 Вопрос № 981

Добрий день уважаемые експерты.
У меня следующая проблема:
я пишу курсак на "С" и мне нада прочитать файл по строкам и загнать ево в структуру
допустим:
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. нада написать сугубо на "С" ("с++" прошу непридлагать)
спасибо за внимание



Вопрос отправлен: 07.08.2003, 15:10
Отправитель: ol

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Приветствую Вас, 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.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (37)
C / C++ (26)
Perl (3)
Builder / Delphi (18)
Pascal (24)
Basic / VBA (11)
Java / JavaScript (10)
PHP (8)
Криптография (9)
WinAPI (15)
Пользователю
Windows 95/98/Me (46)
Windows NT/2000/XP (51)
"Железо" (43)
Поиск информации (26)
Администратору
Windows NT/2000/XP (26)
Linux / Unix (12)
Юристу
Гражданское право (10)
Семейное право (6)
Трудовое право (7)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное