IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Строки, С++
sheka
сообщение 22.03.2010 21:59
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Подскажите, пожалуйста, как из строки удалить слово?

Пока реализовывал, понял из strcat, что char и const char разные типы (почему, что, где еще пока не понял). Решил обойти этот момент через указатели, но здесь меня вообще убило.

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main (){
char s[] ="The; first E36 M3, to be imported to the United States: was the 1995 model.";
char *p; //если закомментировать эту строку
char *n;
printf("%s\n",s);
//*n='\0'; и раскомментировать эту
printf("%s\n",n);

n=s;

printf("%s\n",n);
return 0;
}

получаются чудеса: в *n хранится часть строки s. Если не ошибаюсь, вот эта the 1995 model. Следственно закомментированая строка ее очищает. И, самое поразительное, что потом при n=s; в n сохраняется оставшаяся часть строки The; first E36 M3, to be imported to the United States: was.
Сможете объяснить такой феномен? lol.gif


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 26.03.2010 22:03
Сообщение #2


Гость






Цитата
char s[256] = {0}; Это очистка строки?
Да, это присвоение каждому элементу (символу) строки значения 0. В случае символа происходит приведение 0 к типу char, и записывается '\0'

Цитата
Только на паскаль не похоже...
Я ж тебе говорил, что это разные методы smile.gif

Цитата
А реализация с помощью strcat, strlen возможна?
Может и возможна, но мне проще не извращаться с использованием этих функций, а написать без них.

Добавлено через 5 мин.
Цитата
вот эту (ispunct(*p)!=NULL)||(*p==' ') строку вы заменили на strchr(";:.,!? ", *p) с какой-то целью или просто, для наглядности?
Мне так проще, потому что я сам устанавливаю, что именно является разделителем, а не кто-то за меня устанавливает. Вот видишь, тебе понадобилось добавить пробел - добавлено еще одно условие. А если надо учесть еще и скобки? Еще 2 условия добавлять будешь? В моем случае достаточно добавить все необходимые символы в первый параметр strchr, и никаких дополнительных условий не надо.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.07.2025 13:14
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"