reyo
@reyo

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

c言語のgetchar関数と配列の使い方について

Q&A

Closed

解決したいこと

c言語初学者です.getchar関数で数字を読み込ませ,配列に格納しようと次のようなソースコードを書いたのですが,実行してみると配列の中身,数ともに適当なものが出てきてしまいます.解決方法を教えて下さい。

ソースコード

int main(void){
int v[20];
int ch, a=0;
while( ( ch = getchar() ) != EOF ){
v[a] = ch;
a++;
}
for (int i = 0; i<a; i++){
printf("%d ", v[i]);
return 0;
}

自分で試したこと

12
14
と入力したとき,
49 50 10 49 52 10
と出力されます

0

1Answer

質問者殿が期待されている結果がわからないのですが

12
14
と入力したとき,
12
14
と出力したい

として答えます。

プログラムに欠損がありますので補正してます。
たぶんこんなコードなのでしょう。

#include <stdio.h>
int main(void)
{
    int v[20];
    int ch, a=0;
    while( ( ch = getchar() ) != EOF ){
        v[a] = ch;
        a++;
    }
    for (int i = 0; i<a; i++){
-        printf("%d ", v[i]);
+        printf("%c", v[i]);
    }
    return 0;
}

質問者殿の出力は適当ではありません。
これは入力した文字コード(10進数)が表示されていますので正しく配列に
格納されています。数については、改行が格納されているので、思っていた数と違うのでしょう。
1→49 2→50 改行→10 1→49 4->52 改行->10
合計 6文字分格納

        printf("%d ", v[i]);

このフォマットでは、入力された文字を数値で表示する事になりますので
文字で表示するのであれば

        printf("%c", v[i]);

にすれば入力した文字を文字として出力します。

2Like

Comments

  1. @reyo

    Questioner

    言葉足らずで申し訳ありません.わかりやすい解説までありがとうございます.解決しました.

Your answer might help someone💌