/* Part8 演習問題3 */
/* 関数printfを関数putcharで代替 */
#include <stdio.h>

int main(void)
{
  int x ;
  int num,d ;
  char buf[10] ;
  int ns ;        /* 変換後の文字数 */
  int i ;

  printf("正の整数(9桁以下): ") ;
  scanf("%d",&x) ;

  if((x<0)||(x>999999999)) {
    printf("入力データが誤りです。\n") ;
    return(1) ;
  }
 
  num=x ;
  /* 整数の1桁を文字に変換 */
  for(ns=0;ns<10;ns++) {
    d=num%10 ;
    num=num/10 ;
    buf[ns]=(char)(d+48) ;
    if(num==0) break ;
  }

  /* 整数の桁は逆順 */
  printf("入力された整数は ") ;
  for(i=ns;i>=0;i--) {
    putchar(buf[i]) ;
  }
  printf(" です。\n") ;
  return(0) ;
}

% gcc -Wall part8-3.c
% ./a.out
正の整数(9桁以下): -123
入力データが誤りです。
% ./a.out
正の整数(9桁以下): 1234567890
入力データが誤りです。
% ./a.out
正の整数(9桁以下): 12345
入力された整数は 12345 です。
% ./a.out
正の整数(9桁以下): 0
入力された整数は 0 です。
% ./a.out
正の整数(9桁以下): 987654321
入力された整数は 987654321 です。

  1. 演習問題2とまったく同じデータを入力した.
  2. 3番目から5番目の例が正しいデータを入力した場合であり,文字としての出力でも問題ないことがわかる.