|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.09.2014, 01:36 | #1 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 123
|
Дана строка,удалить 1-ое слово(Язык Си)
Не используя функции стандартной библиотеки Си для работы со строками, кроме указанных написать собственную функцию ,реализующую алгоритм. Дана строка содержащая слова разделённые пробелами. Удалить первое слово строки.
Код,сказали неправильный((( Код:
|
14.09.2014, 07:08 | #2 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
А что неправильно не сказали?
Ты запускал код? Видел что он делает? Этот код с заданием слабо связан, но даже если бы он был правильный, то ты же видишь, что он strlen вызывает, а у тебя сказано: Цитата:
Последний раз редактировалось rrrFer; 14.09.2014 в 07:10. |
|
14.09.2014, 07:21 | #3 |
Участник клуба
Регистрация: 30.07.2008
Сообщений: 1,601
|
Код:
Кавычки для символов - '. На кавычке типа ` выдает ошибку: неизвестный символ 0x60.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
|
14.09.2014, 07:43 | #4 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
По заданию надо написать функцию, а не запихать все в main
|
14.09.2014, 09:45 | #5 | |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 123
|
Цитата:
но за strlen он ничего не сказал,а вот что после цикла у него вызвало много вопросов. Я программу представлял так-мы проходим по всей строке циклом, а потом уже ищем первый с начала строки пробельный символ и следующее слово за ним и там устанавливаем наш курсов,ясное дело не через '\0' а как ещё можно? То есть он прошёл слово увидел пробел и там остановился.На словах это легко представил. |
|
14.09.2014, 09:51 | #6 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,679
|
challengerr первое что бросается в глаза. Выделили 100 char динамически.
А что дальше с этой памятью?
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
14.09.2014, 09:55 | #7 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
ПО ушам ты ездишь и препод это заметил.
Функцию ты где-то без изменений скопипастил - называется она ПервоеСлово и скорее всего она отрежет от строки как раз это слово. Цитата:
\0 - это конец строки, т.т.е. если у тебя была строка "мама мыла раму\0" - то твоя функция запишет "мама\0мыла раму\0", а что должно быть - я не знаю - напиши примеры, я ж сказал в первом посте. Отрежет, если ты перепишешь ее как-нибудь конечно. Сейчас она ваще ниче не делает: Код:
И естественно, str[i] не равен пробелу. Дальше ты увеличиваешь i и шпаришь уже не по своей строке, а по мусору в памяти, находишь среди мусора первый пробел и заменяешь его на \0. Мусором может оказаться что-то полезная и программа может сломаться (зависит от фазы луны). Даже не так. Код:
Последний раз редактировалось rrrFer; 14.09.2014 в 10:00. |
|
14.09.2014, 10:02 | #8 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,679
|
Согласен с rrrFer. Покажите свой код... Дальше видно будет.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
14.09.2014, 10:06 | #9 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
что такое удалить первой слово то?
Если слово - это что-то между пробелами (судя по твоим "попыткам"), то удалить можно так (я пробелы заменил на точки, чтоб виднее было) "..asd..fgh" -> "fgh" или так: "..asd..fgh" --> "..fgh" или так: "..asd..fgh" --> "....fgh" (удаляется только само слово, а пробелы перед ним {если были} остаются) У челенджера ваще не обрабатывается случай, если в начале строки идет сразу пробел - видимо он как-то иначе видит удаление слов (не знаю как). Что программа должна сделать если в строке только пробелы? Что если на вход подана вообще пустая строка? |
14.09.2014, 11:10 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Вот как я вижу решение:
Код:
find2 перестроит строку. Это с потолка, не проверял.
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Борьба со строками: Дана строка, состоящая из слов, разделенных пробелами и заканчивающаяся точкой. Удалить в каждом слове... (C) | dykee | Помощь студентам | 1 | 18.03.2014 05:07 |
Дана строка. В строке удалить символ двоеточие и подсчитать количество удаленных символов.в делфи | _Алексей_ | Помощь студентам | 3 | 29.04.2012 15:37 |
Дана строка со словами, разделёнными пробелами, в конце - точка. Удалить слово с заданным номером (Паскаль ABC) | Margosham-k | Помощь студентам | 6 | 10.04.2012 12:11 |
Дана строка символов. Удалить из исходной строки все цифры. | Striker14 | Помощь студентам | 4 | 26.02.2009 15:50 |
Дана строка символов. Задача: удалить из строки все цифры. | Striker14 | Помощь студентам | 1 | 25.02.2009 20:23 |