sscanf(str, "%s %s %s %d", value.nomer, value.name, value.kinokomp, &value.prodol);
однако так правильно считывет, если все задано по одному слову.
а если value.kinokomp задано несколькими словами, заключенными в скобки, то как быть?
спасибо)
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Считать информацию из строки, pelles C |
*оля* |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: 1 |
здравствуйте. подскажите пожалуйста... Вот, к примеру, мы считываем строку вот так:
sscanf(str, "%s %s %s %d", value.nomer, value.name, value.kinokomp, &value.prodol); однако так правильно считывет, если все задано по одному слову. а если value.kinokomp задано несколькими словами, заключенными в скобки, то как быть? спасибо) |
IUnknown |
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: 627 |
Цитата а если value.kinokomp задано несколькими словами, заключенными в скобки, то как быть? Пользуемся мало кому известными возможностями ...scanf - возможностью работать с регулярными выражениями и возвращаемым значением. С их помощью задача решается в 2 строки: if(sscanf(str, "%s%20[^(](%20[^)])%d",, т.е., сначала пытаемся распарсить строку с учетом того, что value.kinokomp заключен в круглые скобки. Проверяем, сколько полей было заполнено успешно. Если не все 4 - то скобок не было, читаем, как обычно. Если 4 - то нам повезло, строка была со скобками, и была сразу корректно разобрана, второй проход делать не надо. Немного о "магических" числах. Я имею в виду, 20-ку. Это максимальное количество символов, которое может поместиться в соотв. строку. То есть, я для теста задал структуру так: struct s, поэтому могу в каждое строковое поле читать не больше 20 символов. Если у тебя описано по другому - задавай другое значение в форматной строке... |
*оля* |
Сообщение
#3
|
Пионер Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: 1 |
хм....никогда не встречалась с таким, теперь буду знать!)) спасибо большое)
|
Текстовая версия | 4.05.2024 2:17 |