Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> fscanf 
:(
    Опции темы
JAnty
  Дата 29.3.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Не могу сделать следующее:
есть файл "text.txt", содержимое:
Hello World !
Я читаю строки fscanf("%s",&str);
при первом чтении str="Hello"
при второи чтении str="World"
а пробел это разделитель.
Как мне его отследить его(пробел || \n)?

Это сообщение отредактировал(а) JAnty - 29.3.2005, 19:49


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
En_t_end
Дата 29.3.2005, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: 1
Всего: 20



я бы читал так(ifstream in;in.open("test.txt")) in >> str, все это в цикл и усе smile В каждой итерации цикла не забудь выводить, куда там тебе нужно str.
PS наф. юзать sscanf ?
Добавлено @ 17:13
ifstream in;
in.open("test.txt");
char str[9999];
{
int i=0;
while(i != 2)}
in >> str;
cout << str;
i++;}
}



Это сообщение отредактировал(а) En_t_end - 29.3.2005, 17:09
PM MAIL ICQ Skype GTalk Jabber   Вверх
JAnty
Дата 29.3.2005, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Мне надо считать символ после слова Hello и провереть его, Enter или это пробел.
smile


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Fixin
Дата 29.3.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



scanf("%s", str);
scanf("%c", chr);
if (chr == ' ') || ( == '\n') .....

Не уверен на счет %c - чар символ.
PM MAIL ICQ   Вверх
JAnty
Дата 29.3.2005, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Ну так не работает почемуто. smile


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Void
Дата 29.3.2005, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



scanf("%[^ \n]%c, str, &chr);

%[^ \n] означает - читай все, кроме пробела и возврата каретки. Естественно, можно написать побольше разделителей. Это не совсем стандартная фича, но в большинстве современных CRT присутствует.

Это сообщение отредактировал(а) Void - 29.3.2005, 18:40


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
JAnty
Дата 30.3.2005, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 6.12.2004
Где: Москва

Репутация: 1
Всего: 2



Заработало. Fixin Я просто нето писал, вместо
char str;
писал
char* str;
"%c" это один символ, символьней небывает.(То что надо) smile

Цитата(Void @ 29.3.2005, 18:34)
scanf("%[^ \n]%c, str, &chr);

а это чото я не очень понял. smile


--------------------
Русский справочник по WinAPI

Возможно всё, что возможно вообразить! Это и значит быть гением как я!
PM MAIL   Вверх
Void
Дата 30.3.2005, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(JAnty @ 30.3.2005, 10:13)
Цитата (Void @ 29.3.2005, 18:34)
scanf("%[^ \n]%c, str, &chr);

а это чото я не очень понял. smile


Да ничего сложного, хотя это излишне, если вариант Fixin работает. Просто я попробовал предложить еще одно решение.
Помимо стандартных спецификаторов формата (%s, %c и т. д.) есть расширения, позволяющие читать строки с произвольными разделителями. В квадартных скобках - набор допустимых символов, ^ означает дополнение к этому набору, т.е. "все кроме". В данном примере в первое поле могут быть прочитаны любые символы, кроме пробела и \n, т.е. scanf будет читать до первого из этих разделителей. Следующий символ во входном потоке и будет искомый. Немного по этому поводу можно почитать здесь.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Bio
Дата 20.5.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 18.12.2006

Репутация: нет
Всего: нет



Помогите!

Как прочитать поток символов, не разделённых пробелом, из файла эффективным обраозом?

Например: 00101110000110

Имеется в виду:

fi = fopen("input.txt","r");
while (!feof (fi))     
{ 
      // обрабатываю каждый 0 и 1 как отдельный символ
}

Это сообщение отредактировал(а) Bio - 20.5.2008, 17:46
PM MAIL   Вверх
JackYF
Дата 20.5.2008, 18:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



fgetc


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Bio
Дата 20.5.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 18.12.2006

Репутация: нет
Всего: нет



Спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0883 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.