2017-10-26 19 views
0
int read_word(char word[], int max_size_word) { 
{ 
     int c = 0, let_count = 0; 
     printf("\nPlease enter your word: "); 
     char input = toupper(getchar()); 
     for(c = 1; c < 7; c++) { 
      if(input != '\n') { 
       word[c] = input; 
       let_count++; 
      } else if(input == '\n') 
       input = toupper(getchar());  //The word the user entered is in word[c] 
      } 
      return let_count; 
     } 
    } 
    int check_word(char word[], int size_word, int letter_set[], int 
    size_letter_set, int arr[]) 
    { 
     char word_copy; 
     for(int ii = 0; ii < 7; ii++) { 
      word_copy = word[ii]; 
     } 
     printf("The word is %c\n" , word_copy); 
    return 0; 
} 

私はスクラブルのゲームをプログラミングしています。私の質問に関係する2つの機能があります。基本的には、私の読んでいる単語の機能が働いているかどうかをチェックしたい。それは、下のprintfがすることです。しかし、私はカップルの文字を入力するとき私は "単語は....です" printfは、最初に入力した文字を返します。私はprintfが入力されたすべての文字を返すようにしたい。どんな助けもありがとう!ユーザが入力した文字が返されない配列

+2

テキストの書式を正しく設定していれば、最後のprintfがループ外にあることがわかります。 – Serge

+0

@sergeでは、「単語は...」と7回だけ表示されます。 - 私はちょうどそれを試して、何をしたのですか – chrisHG

+1

はい、しかし、あなたはどんな場合でも単語ではなく、単一の文字を印刷しています。この方法では、配列内のすべての文字が1つずつ表示されます。私はそれが戻っ を与えたループ内でそれをテストしたときに単語がE であるあなたが明白なため、中括弧のいくつかの余分なセットを持っているように等々G と.. – Serge

答えて

1

printf("The word is %c\n" , word_copy);のword_copyはcharであり、stringではないため、1文字のみを印刷しています。同様の問題は、あなたのread_word機能であり

int word_size = strlen(word); //calculate the length of your word 
char word_copy[word_size + 1]; //create copy string with word size +1 for \0 
int ii = 0; 
     for(ii; ii < 7; ii++) { //I set ii < 7 to do like you but... Why did you set 7? 
      word_copy[ii] = word[ii]; //put the characters of your word into the copy string 
     } 
    word_copy[ii] = '\0'; //end the string puttin a \0 at its end 
    printf("The word is %s\n" , word_copy); //here i replace %c (char) by %s (string) 
return 0; 

によって

char word_copy; 
     for(int ii = 0; ii < 7; ii++) { 
      word_copy = word[ii]; 
     } 
     printf("The word is %c\n" , word_copy); 
    return 0; 

を交換してみますが、私はあなたのcheck_word機能で行われた修正を理解していれば、あなたはそれらを修正することができるはずcheck_wordで
、( printfをforループに置くことができたとしても、そのようにすることでread_wordの問題を理解するのに役立つと思います)。

関連する問題