1

Cでプログラミングする方法を学び始めたばかりで、数値を受け入れ、それをASCII値として使用して、その値に関連付けられたASCII文字を返すプログラムを作成しようとしています。

プログラムはパラメーターが事前定義されている場合に機能しますが、scanf 関数を導入するとコンパイルされますが、同じ結果が得られません。

これが私のコードです:

#include <stdio.h>

int main(void) 
{
    question2();
    return 0; 
}

int question2(void)
{


    int myInt = 65;

    scanf("%d", myInt);
    char ch = myInt;

    printf("%c",ch);

    return 0;
}

乾杯、助けてくれてありがとう。

4

1 に答える 1

3

toのアドレスを渡す必要があります(コンパイラはこれに対して警告を発しているはずです)。myIntscanf()

scanf("%d", &myInt);

の戻り値もチェックして、実際に割り当てられているscanf()ことを確認する必要があります。行われた割り当ての数を返します。この場合、次のようになると予想されます。myIntscanf()1

if (1 == scanf("%d", &myInt))
{
}

intの範囲値は よりも大きいcharため、 に格納されている値myIntが に収まることを確認する必要がありますcharlimits.hチェックに使用できるヘッダーで定義されたマクロがあります。

if (1 == scanf("%d", &myInt))
{
    if (myInt >= CHAR_MIN && myInt <= CHAR_MAX)
    {
        printf("%c\n", (char) myInt);
    }
    else
    {
        printf("%d out-of-range: min=%d, max=%d\n",
            myInt, CHAR_MIN, CHAR_MAX);
    }
}

コンパイラquestion2(). 修正するには、 の定義question2()または の宣言をquestion2()の前に置きmain()ます。

于 2012-10-18T11:34:29.187 に答える