私はCを初めて使っていますので、私の誤解を許してください。私は、ユーザーのキャラクター入力を受け取り、それを突然変異させ、それを "ブタクラシ"でプリントアウトする簡単なプログラムを書こうとしています...単語の最初の文字が単語の最後に移動し、その後 "ay"単語の末尾に追加されます。例 - >「like」という言葉が「ikelay」になります。ここに私のプログラムがあります...プログラムはEOFで終了せず、最後の文字が '[スペース]'の場合は印刷されません
//pig latin
#include <stdio.h>
#define MAX 1000
void pigify(char chars[], int cnt);
void sortWords(char stream[], int total);
void clearWord(char word[], int j);
int main(){
int c, i;
char allChars[MAX];
i = 0;
while((c = getchar()) != EOF){
allChars[i] = c;
++i;
}
allChars[i] = '\0';
sortWords(allChars, i);
return 0;
}
/////////////////
/////////////////
void sortWords(char stream[], int total){
int i, j, start, end, m;
char words[total];
clearWord(words, total);
i = j = end = m = 0;
while(stream[i] != '\0'){
if(stream[i] != '\n' && stream[i] != '\t' && stream[i] != ' '){
++i;
++j;
} else if (j > 2){
end = i;
for(start = i-j; start <= end; ++start){
words[m] = stream[start];
++m;
}
pigify(words, m);
clearWord(words, m);
j = m = 0;
}
}
}
/////////////////
/////////////////
void clearWord(char word[], int i){
int j;
for (j = 0; j <= i; ++j){
word[j] = '\0';
}
}
/////////////////
/////////////////
void pigify(char alls[], int cnt){
int j;
char pchars[cnt+3];
j = 0;
while(alls[j] != '\0'){
pchars[j] = alls[j];
++j;
}
if(alls[0] != 'a' && alls[0] != 'e' && alls[0] != 'i' && alls[0] != 'o' && alls[0] != 'u'){
pchars[cnt] = alls[0];
pchars[cnt+1] = 'a';
pchars[cnt+2] = 'y';
pchars[cnt+3] = '\0';
pchars[0] = ' ';
}
printf("\npost pigification --> %s\n", pchars);
}
私は長い間それを続けてきました。私はどこで間違いを犯したのか分かりません。私はプログラムについてはあまり気にしません。私は入力を「ブタクラシ」に変換する必要はありませんが、私が間違って行ったことを本当に知りたいです!ヘルプ、アドバイス、および/またはポインタが素晴らしいでしょう!これにより
while((c = getchar()) != EOF){
allChars[i] = c;
++i;
}
:あなたは
注: 'j'や' m'よりも有用な変数名を考えてください。 – chux