gpt4 book ai didi

c - 如何在c中获取没有 `scanf()`的整数和浮点输入?

转载 作者:行者123 更新时间:2023-11-30 14:55:47 25 4
gpt4 key购买 nike

如何在不使用 scanf() 的情况下将用户给出的整数和浮点值分配给变量或数组?

就像我们有 getcharfgetcfgets...等用于 charstring , 有 float 和整数的函数吗?

最佳答案

没有读取整数和 float 的函数,但您可以将 fgetsstrtol 结合使用来读取整数,使用 strtof 来读取 float :

// floats:
char str_f[20];
float f;

fgets (str_f, 20, stdin);
f = strtof(str_f, NULL);

// integers:
char str_i[20];
int i;

fgets(str_i, 20, stdin);
i = strtol(str_i, NULL, 0);

您还可以将 atoi 用于整数,但不建议这样做,因为 atoi 无法检测错误并且它被认为已过时。

如果您想检测错误,可以使用以下代码:

// floats:
char *endptr_f;
char str_f[20];
float f;

fgets (str_f, 20, stdin);
f = strtof(str_f, &endptr_f);

if (*endptr_f != '\n' || str_f[0] == '\n' || endptr_f == str_f)
{
printf("ERROR: \"%s\" is an invalid float!\n", str_f);
}

// integers:
char *endptr_i;
char str_i[20];
int i;

fgets(str_i, 20, stdin);
i = strtol(str_i, &endptr_i, 0);

if (*endptr_i != '\n' || str_i[0] == '\n' || endptr_i == str_i)
{
printf("ERROR: \"%s\" is an invalid integer!\n", str_i);
}

关于c - 如何在c中获取没有 `scanf()`的整数和浮点输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45512240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com