gpt4 book ai didi

c - 如何在C中读取和比较文件中的字符串,然后获取它旁边的数字

转载 作者:行者123 更新时间:2023-11-30 15:23:27 24 4
gpt4 key购买 nike

这是算法:

  1. 打开文件。
  2. 从文件中读取字符串。
  3. 比较字符串。
    • 如果字符串匹配,则获取“=”后面的数字,然后退出循环。
  4. 检查文件末尾。
    • 如果尚未到达文件末尾,请返回第 2 步。
    • 如果到达文件末尾,则退出循环,并转到步骤 5。
  5. 该字符串不在文件中。

这是我制作的程序:

FILE *fp = fopen("Converter.txt", "r");
char a;

while( fgets(line, sizeof(line), fp) != NULL ){
if(strcmp(line,a)){
printf("There is such string");
sscanf(line,"%*[^=]=%f", &num);
printf("\n\n%.2f",num);
}else{
printf("NULL\n");
continue;
}break;
}

文件内部:

Inch to Meter = 0.0254
Foot to Centimeter = 30.84
Foot to Inch = 12.00
and many more.

输入:

Foot to Centimeter

输出:

There is such string

30.84

问题是它只扫描第一行,而不扫描它比较的字符串旁边的数字。

谢谢。

最佳答案

执行此操作的简单方法是让 sscanf 为您进行字符串比较:

while(fgets(line, sizeof(line), fp)) {
double num;
if (sscanf(line, " string =%lf", &num) == 1) {
printf("Found line with 'string' and %f\n", num);
break; } }

sscanf 将匹配输入行上的字符串 string,后跟 = 和数字。另请注意格式字符串中的空格 - 这些空格将匹配任意数量的空格,因此这将匹配以下所有行:

string=1
string = 2
string =4

当然,它也会匹配如下行:

string=5with extra stuff on the end...

并忽略数字后面的所有内容。

关于c - 如何在C中读取和比较文件中的字符串,然后获取它旁边的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28789872/

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