再び、私は自分自身が比較的道に迷い、仲間から知識を求めていることに気づきました。私がする必要があるのは、子音の後に文字「u」「t」を追加して英語に出力するエンコードされた言語を取り込むプログラムを作成することです。したがって、入力した Hutelutluto は hello として出力されます。最初は理解できたと思っていましたが、教授は最初の入力を文字配列に格納して表示する必要があると言いました。次に、その文字配列を使用して、変更された翻訳を出力します。
私はいくつかの異なる角度を試しました.1つは、変更パラメーターに合わせて読み取り文字列関数を変更しようとしました。それは常にめちゃくちゃになってしまい、予期しない出力が得られます。
基本的に、文字配列を while ループに入れるには助けが必要だと思いますが、試してみると、整数エラーとのポインター比較があるというエラーが表示されます。
これが私のコードの私の版で、問題の解決に最も近いと信じています。現時点では、while は readstring 関数とは独立して機能します。私は問題を考えすぎていると確信していますが、ねじれを解決する方法がわかりません。:
/*
Tut language
By: Steven
*/
# include <stdio.h>
void readstring(char *, int);
int main (void){
char input [50];
char output;
char trash;
//initiation
printf("\n\t*Hi! Welcome to the assemble of Tut*\n");
printf("I can help you decode/encode a message to and from the code called Tut!\n");
printf("Enter a sentence to be translated frome Tut - English: ");
readstring(input, 50);
printf("Your Tut sencence is: %s \n",input);
while (output != '\n') {
output = getchar();
if(output == '\n'){//escape sequence
break;
}
if((output != 'a') && (output != 'e') && (output != 'i') && (output != 'o') && (output != 'u') && (output != 'y') && (output != ' ')){
putchar(output);
trash = getchar();
trash = getchar();
}else{
putchar(output);
}
}
return 0;
}// end main
//function lists start
void readstring(char * buffer, int size) {
int x;
char c = getchar( );
if( c == '\n' ) {
c = getchar( );
}
for(x = 0 ; (x < (size-1)) && c != '\n' ; x++) {
buffer[x] = c;
c = getchar( );
}
buffer[x] = '\0';
}
どんな助けやフィードバックも大歓迎です!お時間をいただきありがとうございます!
ps
あなたのアドバイスを考慮した後、コードを編集しましたが、最初の入力以降はすべて無視されているようです。!='\n' 条件を i < 50 に変更してみましたが、同じ結果が得られました。
ティムのアドバイスを受けた後のコード行:
for (i = 0; input [i] != '\n'; ++i){
output = input[i];
if((output != 'a') && (output != 'e') && (output != 'i') && (output != 'o') && (output != 'u') && (output != 'y') && (output != ' ')){
putchar(output);
trash = getchar();
trash = getchar();
}else{
putchar(output);
}
}