0

这是一个程序,它逐个字符地读取数据,直到找到一个字符数字并将其转换为整数。

#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 回答