Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2011, 15:00   #1
just_dake
Пользователь
 
Регистрация: 01.03.2011
Сообщений: 39
Подмигивание Работа со строками в СИ.

Здраствуйте форумчане! У меня такой вопрос: как вывести только определенное слово строки (например 1-ое, 2-ое или последнее), и еще как удалить определенное слово ( также 1-ое, 2-ое или последнее).
Подскажите пожалуйста (желательно с примером) , просто я с этим до этого не сталкивался.
just_dake вне форума Ответить с цитированием
Старый 04.05.2011, 16:35   #2
Danko
Пользователь
 
Регистрация: 20.04.2011
Сообщений: 13
По умолчанию

Ну, идея такая: слова в строке должны быть разделены каким-либо символом, например, пробелом. Например, чтобы скопировать второе слово, перебираем символы пока не встретим первый пробел(разделяющий 1 и 2 слово), после пробела выводим символы до тех пор пока не встретится следующий пробел или точка(если конец строки). Аналогично с удалением.
Danko вне форума Ответить с цитированием
Старый 04.05.2011, 17:04   #3
just_dake
Пользователь
 
Регистрация: 01.03.2011
Сообщений: 39
По умолчанию

У меня была идейка типа:
Код:
...
if(str[i]==' ') continue;
...
но как определить 1-ый ли это пробел?
типа вводим переменную p=0.
И цикл в цикле:
Код:
...
int p=0;
...
if(str[i]==' ')
 {if(p=1)
  continue;}
...
Типа так? Можете свои примеры привести, был бы премного благодарен!
just_dake вне форума Ответить с цитированием
Старый 04.05.2011, 17:42   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Могу предложить: http://www.programmersforum.ru/showthread.php?t=121545
как основу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2011, 18:13   #5
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Код:
int i=0,t=0;
while(t<N) if(str[i]==' ' || str[i++]=='.')  t++;  //N- номер нужного слова
while(str[i]!=' ' && str[i]!='.') printf("%c", str[i++]);
Код:
int i=0,t=0;
while(t<N) if(str[i]==' ' || str[i++]=='.')  t++;  //N- номер удаляемого слова
int d=0; // длина слова
while(str[i]!=' ' && str[i]!='.') d++;
while(str[i+d]!=0) swap(&str[i+d],&str[i++]);
str[i+d]=0;
Писал на коленке, но вроде все должно работать =)
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 04.05.2011, 18:19   #6
just_dake
Пользователь
 
Регистрация: 01.03.2011
Сообщений: 39
По умолчанию

Большое спасибо! А можно по подробнее что выполняет функция(или оператор) swap?
just_dake вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками Blond_89 Паскаль, Turbo Pascal, PascalABC.NET 6 27.12.2010 19:33
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа со строками ponchikpk Помощь студентам 13 17.03.2009 21:08
Работа со строками Nividimka Помощь студентам 11 03.03.2007 15:58