gpt4 book ai didi

检查输入字符串是否为 C 中的实数

转载 作者:行者123 更新时间:2023-11-30 20:53:56 24 4
gpt4 key购买 nike

C 中是否有一种优雅的方法来检查给定字符串是否为“double”?如果变量的类型是 double,则不会,但如果字符串包含实数则不会。例如:

char input[50];
printf("please enter a real number: \n");
scanf("%s", input);
if ( is_double(input) ) {
//user entered "2"
return true;
//user entered "2.5"
return true;
//user entered "83.5321"
return true;
//user entered "w"
return false;
//user entered "hello world"
return false;
}

最佳答案

您需要定义 if 121e23对你来说是 double 。那-4z呢?或12.3, ?因此,指定可接受和禁止的输入(提示:在纸上使用 EBNF 可能会有所帮助)。

<小时/>

请注意 strtod可以使用并且可以给出指向最后一个解析的字符的指针。

所以(在文件开头附近添加 #include <stdlib.h> 之后......)

char* endp=NULL;
double x = strtod(input, &endp);
if (*endp == 0) { // parsed a number
<小时/>

还有sscanf (您需要包含 <stdio.h> )返回扫描项目的数量,并接受 %n给出当前字节偏移量。

int pos= 0;
double x = 0.0;
if (sscanf(input, "%f%n", &x, &pos)>=1 && pos>0) { // parsed a number
<小时/>

您还可以使用正则表达式(regcomp(3) & regexec(3) ...)或parse手动输入字符串

留作练习。

PS。请仔细阅读链接的文档。

关于检查输入字符串是否为 C 中的实数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44219001/

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