c - 从文件中读取特定变量并将它们的值分配给我的代码中的变量
问题描述
我不太实际c
或“c
做事的方式”,我偶然发现了一个问题。我有一个包含一些变量及其相应值的文件,例如
Var1 1
Var2 15
Var3 1.6
var4 SomeText
如何从此文件中读取变量并将其分配给代码中具有相应名称的变量?我正在寻找以下风格的东西
double Var3 = ReadFromFile(File, "Var3");
所以我的主要尝试集中在尝试解析文件中的“Var3”部分,但我无法做到这一点c
,所以任何帮助将不胜感激。我不想简单地按顺序读取文件,因为文件中变量的位置也应该是任意的
var4 SomeText
Var2 15
Var1 1
Var3 1.6
应该是可读的。到目前为止我的代码是
FILE* InstFile = fopen("Filename", "r");
char row[128];
while(fgets(row, sizeof(row), InstFile) != NULL) {
//I don't know what to put here to select only the text I want and extract the value.
}
解决方案
这是一个使用strtok
和strtod
获取double
基于您输入的字符串的函数:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WHITESPACE " \t\r\n"
double get_double_from_file(FILE *fp, const char *var_name)
{
rewind(fp);
for (char *vname, buf[1024]; fgets(buf, sizeof buf, fp);)
{
if (strcmp((vname = strtok(buf, WHITESPACE)), var_name) == 0)
{
char *vstr = strtok(NULL, WHITESPACE);
char *errptr;
double dv = strtod(vstr, &errptr);
if (*errptr != '\0')
{
// handle error
}
return dv;
}
}
// handle if string not found
return 0.0;
}
int main(void)
{
FILE *fp = fopen("foo.txt", "r");
printf("%lf\n", get_double_from_file(fp, "Var2"));
}
所以如果我foo.txt
是:
Var1 1.23
Var2 4.56
Var3 7.89
输出是:
4.560000
推荐阅读
- artifactory - 我可以使用 webdav , davfs2 将相同的工件存储库安装到 100 多台机器上吗
- javascript - jQuery 单击使用 jQuery 的按钮并在 ajax 成功后将数据附加到响应
- mysql - SELECT COUNT(复杂查询中的空闲房间类别)
- node.js - mongodb 中不区分大小写的 find() 函数与 mongoose
- android - 爱普生SDK问题
- asp.net - 如何使用 ajax 将 id 从客户端传递到 webform
- google-cloud-platform - 类型错误:google.cloudbilling 不是函数
- android - react-native-video 需要很长时间才能开始播放
- glassfish - glassfish server 如果直接访问IP地址,不知道如何重定向到域
- java - 将 UTC 中的纪元时间转换为另一个时区中的纪元时间