/* Part8 演習問題2 */ /* 関数scanfを関数getsで代替 */ #include <stdio.h> #include <string.h> int main(void) { int num ; /* 変換後の整数 */ char buf[10] ; int ns ; /* 文字列の文字数 */ int i ; printf("正の整数(9桁以下): ") ; /* scanf("%d",&num) ; */ if(gets(buf)==NULL) { printf("入力に失敗しました\n") ; return(1) ; } ns=strlen(buf) ; if((ns==0)||(ns>9)) { printf("入力データの桁数が誤りです。\n") ; return(1) ; } /* 文字列を整数に変換 */ num=0 ; for(i=0;i<strlen(buf);i++) { if((buf[i]>='0')&&(buf[i]<='9')) { num = num*10 + (int)buf[i]-48 ; } else { printf("入力データが正の整数ではありません。\n") ; return(1) ; } } printf("入力された整数は %d です。\n",num) ; return(0) ; } |
% gcc -Wall part8-2.c % ./a.out 正の整数(9桁以下): -123 入力データが正の整数ではありません。 % ./a.out 正の整数(9桁以下): 1234567890 入力データの桁数が誤りです。 % ./a.out 正の整数(9桁以下): 12345 入力された整数は 12345 です。 % ./a.out 正の整数(9桁以下): 0 入力された整数は 0 です。 % ./a.out 正の整数(9桁以下): 987654321 入力された整数は 987654321 です。 |