0

我需要从一个float数字中计算数字并保留该数字。我可以使用scanf()with %for%c但不是%s,我可以使用getchar().

我可以使用 getchar 但我会丢失号码。

4

2 回答 2

2

为什么你会丢失号码getchar

  1. 使用 getchar 读取字符,直到您点击空格/输入/输入结束
  2. 将它们全部收集到一个字符串中
  3. 用于strtod确保它是有效的浮点值
  4. 计算字符串中的数字 - 无论您需要什么,都可以在该点之前或之后。

如果您仅限于getchar

  1. 一个一个地读取字符getchar
  2. 保持您在数字中所处位置的状态:小数点前、小数点后或小数点后
  3. 只要它是一个有效的浮点数,就继续计数数字(即 1 位或更多位,然后可选地在其后有 1 位或更多位的小数点)
  4. 通过移位 10 的幂将数字收集为浮点数(即小数点前乘以 10.0 并添加新数字,小数点后除以 10 的增长幂并添加)。
于 2010-01-01T08:13:45.750 回答
0

正如我所见,您得到了答案,但这也适用于您吗?

#include <stdio.h>


int main()
{
    char *str = new char[30];
    float flt;
    int count = 0;

    scanf( "%f", &flt);
    printf( "number you entered is: %f\n", flt);
    sprintf(str, "%f", flt );

    for( ;str[count] != '\0'; count++ );

    printf( "%f have %d digits", flt, count-1);
    return 0;
}
于 2010-01-01T09:08:12.263 回答