0

私はCから始めたばかりで、ポインターの全体像を把握しようとしていますが、次の問題に遭遇しました。

ユーザーが入力した文字を別の関数に渡して出力しようとしています:

#define MAX_OPTION_INPUT 1
#define TRUE 1
#define FALSE 0


// print a menu
void getCharacter() {   
    char getNum[MAX_OPTION_INPUT+2];
    int finished = FALSE;

    // get character from user
    do {
        fgets(getNum, MAX_OPTION_INPUT+2, stdin);
        if (getNum[strlen(getNum) - 1] != '\n') {
            printf("Input one digit number please.\n");
            readRestOfLine();
      }
      else {
         getNum[strlen(getNum) - 1] = '\0';
         finished = TRUE;
      }
   } while (!finished);

    processChar(getNum);
}


// process menu
void processChar(char num) {
    printf("TADA: %c", num);
}

このコードをコンパイルすると、警告が表示されます: 'processChar' の引数 1 を渡すと、キャストなしでポインターから整数が作成されます

そして、実行すると、渡すはずの文字ではなく、奇妙な文字が出力されます。

ここでどこが欠けているのか説明していただけますか?前もって感謝します!

4

1 に答える 1

3

を受け入れるように関数を変更しますchar *

void processChar(const char *num)
{
    printf("TADA: %s", num); /* %s instead of %c */
}

ここでどこが欠けているのか説明していただけますか?

num実際には文字配列である場合、文字であるかのように渡して使用しています。

于 2012-08-23T16:42:04.590 に答える