gpt4 book ai didi

C - 获取字符串检查它并使其成为 double

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

double_q_CPUTime;
double temp;

printf("Please enter q: CPU Time: ");

scanf("%lf", &temp);

if(input_validator('a',temp) == 'T') {
q_CPUTime = temp;
}
else {
printf("Invalid input");
}

我不知道如何处理上述代码的错误。我基本上愿意

  1. 提示用户输入
  2. 验证用户输入以查看是否仅包含 1,2,3,4,5,6,7,8,9 或 。基本上是为了确保它是一个 double
  3. 然后,如果它是 double ,我想将 temp 中保存的值转换为 q_CPUTIME
  4. 如果不是 double ,则向用户显示一条错误消息,指出“输入无效”

我希望这个循环直到用户输入有效的 double 。

我已经尝试了很多方法,上面的代码是我最好的尝试。我只是想不出一种方法来实现这一点。

每次我尝试时,即使用户输入一个字符串,它也会将一些奇怪的数字保存到 double 中,导致我稍后在程序中的计算中断,甚至 C 崩溃。

对我上一篇关于这个主题的非常模糊的帖子表示歉意。

(我检查了输入的每个字符,但在将其转换为 double 字符时遇到了问题)

最佳答案

你应该使用strtod;它也检查双溢出/下溢:

#include <errno.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

double d;
char *e,s[100];

fgets(s,100,stdin); if( s[strlen(s)-1]=='\n' ) s[strlen(s)-1]=0;
errno=0;
d=strtod(s,&e);
if( *e || errno==EINVAL || errno==ERANGE )
puts("error");
else
printf("d=%f\n",d);

关于C - 获取字符串检查它并使其成为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173237/

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