dポイントプレゼントキャンペーン実施中!

c言語の文字列について質問です。
putcharを用いて整数を表示するプログラムなのですが
下のプログラムを出力したところ数値を入力しても出力することができません。どこがおかしいのでしょうか?
アドバイス等よろしくお願いします




#include <stdio.h>

void print_integer(int number){
int i,j;
char no[256];
for(i=0;i<sizeof(number);i++){
no[i]=number%10;

}
for(j=sizeof(number)-1;j>0;j--){
putchar(no[j]);
}
}

int main(void) {

int number;
printf("number?:");scanf("%d",&number);
print_integer(number);

return 0;
}

A 回答 (4件)

>for(i=0;i<sizeof(number);i++){


>no[i]=number%10;
>}

ループの中で毎回全く同じ計算をしてるから
noにーの位の数値しかはいらないよね。
それに10進の数値の桁数はsizeof じゃ求まらない。

>for(j=sizeof(number)-1;j>0;j--){
>putchar(no[j]);
>}

putcharで出力するなら、数値をasciiコード(数字を表わす文字コード)に直して
出力しないとだめ。
    • good
    • 1

さすがに scanf や putchar は C の言語仕様に入ってるんだけどなぁ>#1. 「言語」そのものじゃなくて「標準ライブラリ」だけど, 標準ライブラリも ISO 9899 に規定する「言語仕様」の一部ではある. 「使えない処理系が存在する」ことは否定しないけど.



さておき, putchar がどのような機能であるか理解していますか?
    • good
    • 0

> for(i=0;i<sizeof(number);i++){


> no[i]=number%10;

を、

printf("for(i=0;のループ開始, sizeof(number)=%d\n", sizeof(number));
for(i=0;i<sizeof(number);i++){
 printf("i=%d\n", i);
 no[i]=number%10;
 printf("no[i=%d]=%d\n", i, no[i]);

とか、iやnumberとかsizeof(number)の数値を確認して、質問者さんが入力、期待した通りの数値になっているか、確認したら何かの手掛かりになるかも。
    • good
    • 0

このような質問をするときには処理系(OS,コンパイラ)を書かなければダメですね。


scanf,putcharなどはCの言語仕様ではありません。

sizeof(number)の意味を理解していない。
no[i]=number%10;では同じ数値の繰り返し。
no[j]の中には何が入っているかを理解していない。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!