Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Удаление первого слова


Автор: bncom 12.3.2006, 16:48
В символьной строке удалить предпоследнее слово.

Код

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

int main(void) 
{ 
      char *string;       
      char delimiter = ' ';   
      int i;         
  
   printf ("Пожалуйста, введите символьную строку:"); 
   gets(string);       // считываем введенную строку, заносим в string 
   for (i = strlen(string)-1; *(string+i) != delimiter && i; i--); 
   if (i)          
         { 
              char *temp = string+i+1; 
              for (i--; *(string+i) != delimiter && i; i--);    // ищем предпоследнее слово 
              memmove(string+i+1, temp, strlen(temp)+1);   // копируем последнее слово + null поверх предпоследнего 
         } 
   printf ("А вот строка без предпоследнего слова:"); 
   printf("%s\n", string); // выводим полученную строку 
   return 0; 
   getch();    
}


Помогите немного изменить задачу, чтобы удалялось первое слово.

Автор: Fixin 12.3.2006, 17:39
Код

#include <stdio.h>        
#include <string.h>       
int main(void)    
{    
      char *string;        
      char delimiter = ' ';    
      int i;          
    
   printf ("Пожалуйста, введите символьную строку:");    
   gets(string);       // считываем введенную строку, заносим в string    
   for (i = 0; (i < strlen(string))&&(string[i]!=delimiter); i++);
   strcpy(string, string+i);
   printf ("А вот строка без первого слова:");    
   printf("%s\n", string); // выводим полученную строку    
   return 0;    
   getch();     
}

Отладишь сам.

Автор: Dov 13.3.2006, 02:22
Считаем, что:
  • слова состоят из букв и цифр
  • всё остальное - разделители
Код

#include <stdio.h>    
#include <string.h>     
#include <ctype.h>
    
void main()     
{     
    char source[] = "!!!slovo1, slovo2; slovo3 - slovo4 !!!";     
    char *beg     = source;
    char *end     = source;
    
    printf("%s\n", source);

    // вырезаем только само слово, оставляя разделители
    while(!isalnum(*end)) beg++, end++;    
    while( isalnum(*end)) end++;
    
    strcpy(beg, end);
    printf("%s\n", source);    
}



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)