0

これは、文字の数字が見つかるまでデータを 1 文字ずつ読み取り、それを整数に変換するプログラムです。

#include <stdio.h>

int main(void) {

  char ch = getchar();
  printf("Type some data including a number");
  while(ch < '0' || ch > '9') //as long as the character is not a digit.
  {
    ch = getchar();
  }

  int num = 0;
  while(ch >= '0' && ch <= '9') //as long as we get a digit
  {
    num = num * 10 + ch - '0'; //convert char digit to integer
    ch = getchar();
  }
  printf("Number is %d\n",num);

}

このプログラムは、正の整数のみを検索します。プログラムに負の整数または浮動小数点数も見つけてもらいたいです。それを行うプログラムをどのように作成しますか?数字を探すwhileループ内でifステートメントを使用しようとしましたが、うまくいきませんでした。

4

2 に答える 2

2

fscanfより良い解決策になるようです

于 2013-07-11T16:14:14.197 に答える
0

例えば

#include <stdio.h>
#include <ctype.h>

int main(void) {
    //input format ([^0-9]*-)?[0-9]+

    int ch, sign = 1;
    while(!isdigit(ch=getchar())){
        if(ch=='-'){
            ch=getchar();//one character look-ahead
            if(isdigit(ch)){
                sign = -1;
            }
            ungetc(ch, stdin);//push back
        }
    }

    int num;
    for(num=0;isdigit(ch);ch = getchar()){
        num = num * 10 + ch - '0';
    }
    num *= sign;

    printf("Number is %d\n",num);

    return 0;
}
于 2013-07-11T22:38:31.647 に答える