2013-11-14 5 views
0

Публикуется на этом сайте впервые. Я пытаюсь написать программу перевода latin latin, и мне трудно удалить первый символ каждого слова в строке и добавить его в конец слова. Если бы кто-нибудь мог дать мне какие-либо предложения, мы были бы очень благодарны. Однако я стараюсь не менять то, что у меня уже слишком много. Что касается строковых функций, я ограничусь использованием strcpy, strcmp, strlen и strtok, поскольку я всего лишь студент в полном курсе.Пытается удалить первый символ слова и поместить его в конец

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

void main (void) 
{ 
char sentence[81]; /* holds input string */ 
char *platin; /* will point to each word */ 

printf ("This program translate the words in your sentence.\n"); 
printf ("Type end to finish.\n"); 

do /* for each sentence */ 
    { 
    printf ("\n\nType a sentence until 'stop': \n "); 
    gets (sentence); 

     platin = strtok (sentence, " "); 
    while (platin != NULL) /*Moves translator from word to word */ 
      { 

       if (strchr("aeiouAEIOU", *platin)) /*Checks for vowels */ 
        { 

        printf(" %sway ", platin); 
        } 

       else if (strchr("bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ",*platin)) 
        { 
        printf(" %say", platin);  
        } 




      platin = strtok(NULL, " "); 



      } 
} while (strcmp(sentence, "stop") != 0); 

} 

ответ

0

Пока вы не нашли место, слово не заканчивается. Поэтому скопируйте мир в буфер, а затем, как только вы найдете пробел, переместите буквы:

char[1024] wordBuff; 
int j = 0; 
for (int i = 0; i < strlen(sentence); i++) { 
    if (sentence[i] == ' ') { 
     char tmpC = wordBuff[j-1]; // 
     wordBuff[j-1] = wordBuff[0]; // switch the letters 
     wordBuff[0] = tmpC;   // 
     wordBuff[j] = '\0';   // end of word 
     printf("%s\n", wordBuff); 
     j = 0; 
    } 
    else 
     wordBuff[j++] = sentence[i]; // fill wordBuff with word's char 
} 
Смежные вопросы