Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Kernel Гость
|
Добавлено: Ср Авг 06 2003 14:00 Заголовок сообщения: Обработка строк и параматров |
|
|
Примeр: #include
char cmd[256]; int main() { scanf("%s", cmd); .................. И если ввести чтото вроде : 111 222 333 444 как присвоить (char cmd1[256]) любое значение из этой строчки |
|
Вернуться к началу |
|
|
FFF Гость
|
Добавлено: Ср Авг 06 2003 14:33 Заголовок сообщения: Re: Обработка строк и параматров |
|
|
значения разделяются пробелом? Значит,
1) в цикле ищем в cmd[] 1ый НЕПРОБЕЛ. Это начало текущего значения. Запомнили позицию этого символа ipos0.
2) ищем конец значения -- 1ый ПРОБЕЛ после позиции ipos0. Запомнили позицию этого пробела ipos1. Т.о. текущий параметр находится в cmd[ipos0,ipos1-1]. Для копирования этого параметра в строку cmd1 можно использовать strncpy. Для выделения следующего параметра повторяем процесс с шага 1. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Чт Авг 07 2003 10:31 Заголовок сообщения: Можно проще |
|
|
char cmd1[256], cmd2[256]; int main() { // например читаем первый и третий, а второй пропускаем scanf("%s %*s %s", cmd1, cmd2);
Если ввести 111 222 333 444 будет cmd1="111" cmd2="333"
А вообще, советую сперва делать char line[ 256 ]; gets( line ); а потом sscanf( line, "%...
Так есть возможность разгребать строку по различным сценариям, т.е. если первый не прошёл, пробуем следующий вариант и т.д. Особенно это касается работы с файлами, я лично много раз наблюдал как не работает fscanf, а fgets + sscanf работает на ура. |
|
Вернуться к началу |
|
|
grayrat
Зарегистрирован: 30.06.2003 Сообщения: 189
|
Добавлено: Чт Авг 07 2003 10:45 Заголовок сообщения: Re: Обработка строк и параматров |
|
|
Дело в том, что в данном варианте cmd будет содержать только "111". Нужно использовать gets( cmd ) |
|
Вернуться к началу |
|
|
|