gpt4 book ai didi

c - 如何处理从复杂输入(字符串)中提取 double 类型的数字

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:38 26 4
gpt4 key购买 nike

<分区>

大家好,

我是 C 编程的新手,我偶然发现了一个问题,几天来我一直在努力解决这个问题,但仍然没有令人满意的结果。

我正在尝试提取一些 double以这种形式输入的用户值 {[ 5.1 ; 4 ], [15.3 ; -3.2] } .我尝试了很多方法,到目前为止最好的方法是我使用 fgets() 将用户输入读取为字符串。 , 遍历for如果isdigit()看到一个数字我将它存储在另一个字符串中,然后我检查该数字后面是否有一个点,如果有则我将它放在该数字后面的字符串中,依此类推。

真正的问题是当我想输出结果字符串并将其转换为我想要的 double 时与 strtod()它仅在用户首先输入一些数字时有效,但如果输入看起来像 { [ 2.5 ; 1 ] }代码只是不关心并且什么都不做。任何帮助或见解将不胜感激,也许我采取了错误的方法?谢谢。

我的代码

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <string.h>

#define STR_LEN 256

int main() {

char t1[STR_LEN], digits[STR_LEN], *dpt, per[2] = ".";
int i, digit, period;
double x;

fgets(t1, STR_LEN, stdin);

for (i = 0; i < strlen(t1); i++) {
digit = isdigit(t1[i]);
period = (t1[i + 1] == '.') ? 1 : 0;
if (digit) {
digits[i] = t1[i];
}
if (period == 1) {
strcpy(digits, digits);
strcat(digits, per);
}
}
x = strtod(digits, &dpt);
int testOutput = strlen(digits);
printf("%s %d %lf", digits, testOutput, x);

return 0;
}

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