2015-05-10 5 views
2

у меня есть файл, который включает в себя данных в видеC fscanf читать квадратные скобки

[имя фамилия] [день рождения] [ID]

когда я пытаюсь этот код

while(fscanf(file,"%s %s %s",name,bdate,uid) == 3) 

bdate получает фамилия] в качестве значения

Как я могу читать информацию между квадратными скобками. спасибо.

ответ

2

Ты лучше с fgets() и реальным анализатором, но попробуйте с помощью scanf "scanset" для быстрого исправления

fscanf(file, " [%[^][]] [%[^][]] [%[^][]]", name, bdate, uid) 
//   ^ ^ ^   ordinary whitespace 
//   ^ ^^ ^^ ^ ordinary characters 
//    ^^---^ ^^---^ ^^---^ scanset specification 
//    ^      "reverse" scanlist 
//     ^^      characters in scanlist 
+0

спасибо за помощь. – umtkas

+0

Требуется ли '[]' after '^]'? –

+0

"Are' [] 'after' ^] 'required?" ДА! Обратите внимание, что '[]' состоит из двух различных функций: '' '' является частью списка сканирования (символы, которые должны быть проверены) и ']' завершает спецификацию. Также есть несколько ['и'] 'в строке формата scanf, чтобы соответствовать буквальным символам ввода. – pmg

Смежные вопросы