| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > fscanf |
| Автор: JAnty 29.3.2005, 17:02 |
| Не могу сделать следующее: есть файл "text.txt", содержимое: Hello World ! Я читаю строки fscanf("%s",&str); при первом чтении str="Hello" при второи чтении str="World" а пробел это разделитель. Как мне его отследить его(пробел || \n)? |
| Автор: En_t_end 29.3.2005, 17:08 |
| я бы читал так(ifstream in;in.open("test.txt")) in >> 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++;} } |
| Автор: JAnty 29.3.2005, 17:42 |
| Мне надо считать символ после слова Hello и провереть его, Enter или это пробел. |
| Автор: Fixin 29.3.2005, 18:01 |
| scanf("%s", str); scanf("%c", chr); if (chr == ' ') || ( == '\n') ..... Не уверен на счет %c - чар символ. |
| Автор: JAnty 29.3.2005, 18:13 |
| Ну так не работает почемуто. |
| Автор: Void 29.3.2005, 18:34 |
| scanf("%[^ \n]%c, str, &chr); %[^ \n] означает - читай все, кроме пробела и возврата каретки. Естественно, можно написать побольше разделителей. Это не совсем стандартная фича, но в большинстве современных CRT присутствует. |
| Автор: JAnty 30.3.2005, 10:13 | ||
| Заработало. Fixin Я просто нето писал, вместо char str; писал char* str; "%c" это один символ, символьней небывает.(То что надо)
а это чото я не очень понял. |
| Автор: Void 30.3.2005, 18:17 | ||
Да ничего сложного, хотя это излишне, если вариант Fixin работает. Просто я попробовал предложить еще одно решение. Помимо стандартных спецификаторов формата (%s, %c и т. д.) есть расширения, позволяющие читать строки с произвольными разделителями. В квадартных скобках - набор допустимых символов, ^ означает дополнение к этому набору, т.е. "все кроме". В данном примере в первое поле могут быть прочитаны любые символы, кроме пробела и \n, т.е. scanf будет читать до первого из этих разделителей. Следующий символ во входном потоке и будет искомый. Немного по этому поводу можно почитать http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_scanf_type_field_characters.asp. |
| Автор: Bio 20.5.2008, 17:38 |
| Помогите! Как прочитать поток символов, не разделённых пробелом, из файла эффективным обраозом? Например: 00101110000110 Имеется в виду: fi = fopen("input.txt","r"); while (!feof (fi)) { // обрабатываю каждый 0 и 1 как отдельный символ } |
| Автор: JackYF 20.5.2008, 18:06 |
| fgetc |
| Автор: Bio 20.5.2008, 18:12 |
| Спасибо |