gpt4 book ai didi

C:提取字符串中的两个 float

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:49 25 4
gpt4 key购买 nike

首先对不起我的英语....

我有一个类似于 strng=(x=Number1,y=Number2) 的字符串,我想在两个不同的变量中提取 Number1 和 Number2。我已经从一个文件中提取了字符串,但我无法更改该文件:它是由我们的老师提供的,我非常怀疑如果我更改它以使一切变得更容易,他会喜欢它。

我在 CodeBlocks 上做这件事。我试过使用 sscanf,但无法正常工作。我也尝试过使用 strtok,但我很难理解它是如何工作的。sscanf 对我来说似乎是个好主意,但虽然没有错误消息,但它不起作用。

fscanf(file,"%s",string[i].coordonee); // string[i].coordonee=(x=13.5, y=34.6)
sscanf(string[i].coordonee," (x=%lf, y=%lf)",&Nbx,&Nby);

没有错误消息,但我尝试打印 Nbx 和 Nby,结果为 0。根据我提供的示例,我的目标是获得 Nbx=13.5 和 Nby=34.6。

谢谢!

最佳答案

最简单的方法是只使用 fscanf 从文件中读取值。如果需要首先读取字符串字符串,那么最好使用 fgets,因为它将读取整行或指定的字符数,以先到者为准。

对于 strtok,在第一次调用时需要传递缓冲区和分隔符列表,然后传递 null 以继续标记化。

#include <stdio.h>
#include <string.h>

int main() {

// Using fscanf
{
double x, y;
FILE *fp = fopen("file.txt", "r");
int count = fscanf(fp,"(x=%lf, y=%lf)",&x, &y);
fclose(fp);
printf("Result: %lf, %lf, values read: %d \n", x, y, count);
}

// Using sscanf and fgets
{
double x, y;
FILE *fp = fopen("file.txt", "r");
char buffer[500];
fgets(buffer, 500, fp);
fclose(fp);
int count = sscanf(buffer,"(x=%lf, y=%lf)",&x,&y);
printf("Result: %lf, %lf, values read: %d\n", x, y, count);
}

// Using strtok
{
double x, y;
FILE *fp = fopen("file.txt", "r");
char buffer[500];
fgets(buffer, 500, fp);
fclose(fp);

char *name1 = strtok (buffer, "(, =)");
char *value1 = strtok (NULL, "(, =)");
char *name2 = strtok (NULL, "(, =)");
char *value2 = strtok (NULL, "(, =)");

printf("Result: %s = %s, %s = %s\n", name1, value1, name2, value2);
}
}

关于C:提取字符串中的两个 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58565570/

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