2

これは、ASCII 文字のリストを出力しようとしている C プログラムです。プログラムに一連の数値を出力させることはできますが、リスト内の各数値の ASCII 値を出力することはできません。

#include <stdio.h>
#define N 127

int main(void) 
{   
    int n;  
    int c;

    for (n=32; n<=N; n++) {
        char c = atoi( n); 
        printf("%d", c);
    }
    return 0;
}
4

8 に答える 8

4

atoiASCII を に変換しintます。あなたはそれを渡していnます。nASCII ではありません。ですint。したがって、atoi(n)機能しません。

それを削除した後、あなたがしたいのは、それをn表す ASCII 文字を出力することです。これを行うには:

printf("%c", n);

次のように、各文字に番号を付けることができます。

for (n=32; n<=N; n++) {
    printf("%d: %c\n", n, n);
}

ちなみに。これには、C 実装で実行文字セット (および「C ロケール」) に ASCII を使用する必要があります。多くの人がそうします。ただし、このプログラムは、異なる文字セットを使用する実装には移植できません。

于 2013-08-09T11:11:29.277 に答える
1

次のように、ASCII 値に %c を使用します。printf("%d, %c\n", n, n); 次に、行を削除しatoi()ます。

于 2013-08-09T11:11:07.653 に答える
1

交換

printf("%d", c) 

printf("%c", c)

また、atoiは必要ありません。

以下だけで十分です。

int main(void) 
{   
    int n;  

    for (n=32; n<=N; n++) {
        printf("%c", n);
    }
    return 0;
}
于 2013-08-09T11:11:18.827 に答える
1

%d の代わりに %c を書式指定子として使用する必要があります。

#include <stdio.h>
#include <conio.h>
#define N 127
int main(void) 
{   
    int n;  
    for (n=32; n<=N; n++)
        printf("%c", n);
    getch();
    return 0;
}
于 2013-08-09T11:12:00.003 に答える
1

printfフォーマットをご覧ください。

実際、%d符号付き 10 進整数を出力するために使用されます。対応する文字を出力したいので、探している形式は%c.

したがって、次のようになります。

printf("%d", c);
于 2013-08-09T11:14:12.193 に答える
1
for (n=32; n<=N; n++) {
    printf("%c", n);
}

nを使用して直接文字に印刷できます%c

2 つの variable を定義したことに注意してくださいc。内側の変数 ( char c) は外側の変数 ( ) を隠しint cます。これは有効な C ですが、通常は悪い習慣です。

于 2013-08-09T11:14:38.037 に答える
1

Atoi は int 表現の ascii エントリを変換します。プログラムは次のとおりです。

#include <stdio.h>
#define N 127

int main()
{
  int n;

  for (n=32; n<=N; n++) 
    printf("%c",n) ;

  return 0;
}
于 2013-08-09T11:17:40.427 に答える