如何获得整数和浮动输入没有`scanf()`在c? [英] How to get Integer and float input without `scanf()` in c?

查看:296
本文介绍了如何获得整数和浮动输入没有`scanf()`在c?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在不使用 scanf()


$ b $的情况下将用户给定的整数值和浮点值分配给变量或数组b

就像我们有 getchar fgetc fgets ...等等 char string ,有浮动和整数的函数吗?

解决方案

有没有函数来读取整数和浮点数,但你可以使用 fgets code> strtol 为整数, strtof 为浮点数:

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

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

//整数:
char str_i [20];
int i;

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

您也可以使用 atoi 它不被推荐,因为 atoi 没有检测到错误,并且被认为已经过时了。

如果你想检测错误可以使用下面的代码:

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

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

if(* endptr_f!='\\\
'|| str_f [0] =='\\\
'|| endptr_f == str_f)
{
printf( 错误:\%s \是一个无效的浮点数!\ n,str_f);
}

//整数:
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] =='\\\
'|| endptr_i == str_i)
{
printf( 错误:\%s \是一个无效的整数!\\\
,str_i);
}


How can I assign a integer and float values given by user to a variable or array without using scanf()?

Like we have getchar,fgetc,fgets...etc for char and string, Is there any function for floats and integers ?

解决方案

There aren't functions to read integers and floats but you can use fgets with strtol for integers and strtof for floats:

// 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);

You can also use atoi for integers but it's not recommended because atoi doesn't detect errors and it's considered obsolete.

If you want to detect errors you can use the following code:

// 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);
}

这篇关于如何获得整数和浮动输入没有`scanf()`在c?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆