0

このサイトに初めて投稿します。豚のラテン語翻訳プログラムを作成しようとしていますが、文字列内の各単語の最初の文字を削除して単語の末尾に追加するのが困難です。誰かが私に提案を与えることができれば、それは大歓迎です。しかし、私はすでに持っているものを変えすぎないようにしています。文字列関数に関する限り、私は 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 );

}
4

1 に答える 1

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
}
于 2013-11-14T10:42:23.940 に答える