![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| 1901Maxim |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Почему функция conv возвращает только пеервое слово? Помогите разобраться, а то глаз уже замылился. |
|||
|
||||
| vinick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 3 Всего: 22 |
scanf("%s") читает ввод до первого пробельного символа. у тебя просто нет других слов кроме первого.
А функция conv содержит ошибки и вобще непонятно что должна делать. |
|||
|
||||
| 1901Maxim |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
А, понятно, спасибо. Функция на данном этапе просто должна была разобрать строку по словам, и закинуть во вторую переменную (это я так задачу делаю))).
И ошибок там нет. Это сообщение отредактировал(а) 1901Maxim - 3.12.2008, 23:43 |
|||
|
||||
| vinick |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 3 Всего: 22 |
Спорим ?
Если str1 пустая строка, то идем далеко и надолго, потому как двойным увеличением i, проскакиваем завершающий ноль. Условие в while тут вобще проверяет только str[i], вторая часть с isspace будет вычисляться только когда str1[i] ==0. Если слова разделены не одним, а несколькими пробелами, или строка начинается с пробела, получим slovo состоящее из одного пробела. Пробелы в конце строки тоже частично будут скопированы.
for выполняется j+1 итераций, хотя символов в slovo записано было только j, в str2 записывается мусор. После выхода из цикла j обнуляется, значит на второй и последующих итерациях внешнего цикла может быть con > j. При выходе из цикла for, i1 дважды увеличивается и получаем еще одну дырку с мусором. |
||||
|
|||||
| 1901Maxim |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 30.6.2007 Репутация: нет Всего: нет |
Все нормально завершается.
Почему?
В данный момент это не важно. Но все равно спасибо, изменю.
Сейчас мне это не мешает. |
||||||||
|
|||||||||
| vinick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 3 Всего: 22 |
||||
|
||||
| inside_pointer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 5 Всего: 12 |
con = i1 + 1 до этого i1 выросло до j, в результате на следующем слове con == j+2 получается for(i1 = j+2; i1 <= j; i1++) - ни разу не выполняется slovo[j-sl] можно переделать в slovo[i1-con] |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |