c - 使用文件为c编程中的变量赋值

标签 c fgets scanf

我想从一个 .txt 文件中读取多个变量。

例如,下面的代码将为 Txx、ST、mu、R0、DC 和 NB 赋值。

void main() {

    int Txx = 10;                       
    double ST = 0.07;                       
    double mu = 0.02;                       

    double R0 = 10e-6;                      
    double DC = 40e-6;                      
    int NB = 5;                     

}

相反,有没有一种方法可以使用单个文本文件来分配这些值,该文件可能如下所示:


Txx = 10;                       
ST = 0.07;                      
mu = 0.02;                      
R0 = 10e-6;                     
DC = 40e-6;                     
NB = 5; 

这可能是一个常见问题。如果您将我重定向到解决方案。这将非常有帮助。

谢谢。

最佳答案

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

enum Type { INT, DOUBLE };

struct var {
    char *name;
    void *pointer;
    enum Type type;
};

int search(struct var *vars, const char *name){
    int i;
    for(i=0; vars[i].name ; ++i){
        if(strcmp(vars[i].name, name)==0)
            return i;
    }
    return -1;//not found
}

int main(void){
    int Txx, NB;
    double ST, mu, R0, DC;
    struct var vars[] = {
        {"Txx", &Txx, INT},
        {"NB", &NB, INT},
        {"ST", &ST, DOUBLE},
        {"mu", &mu, DOUBLE},
        {"R0", &R0, DOUBLE},
        {"DC", &DC, DOUBLE},
        {NULL, NULL, 0}
    };
    FILE *fp = fopen("data.txt", "r");
    char buff[128];
    int i;

    while(1==fscanf(fp, "%s", buff)){
        if(-1!=(i=search(vars, buff))){
            if(vars[i].type == INT)
                fscanf(fp, " %*c %d;", (int*)vars[i].pointer);
            else if(vars[i].type == DOUBLE)
                fscanf(fp, " %*c %lf;", (double*)vars[i].pointer);
        }
    }
    fclose(fp);
    printf("Txx = %d\n", Txx);
    printf("ST  = %f\n", ST);
    printf("mu  = %f\n", mu);
    printf("R0  = %e\n", R0);
    printf("DC  = %e\n", DC);
    printf("NB  = %d\n", NB);
    return 0;
}

关于c - 使用文件为c编程中的变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856683/

相关文章:

c - fgets() 多次使用时会导致 C 程序崩溃

c - 以特殊格式将空字符串与scanf匹配的问题

c - device_create 使用现有设备名称

C:从控制台读取可选输入

c - 为什么代码退出 Ant 不完成

c - C语言中的fgets在获取字符串后多次打印

c - fgets() 未按预期运行

c - 在 C 中处理来自行的数据

c - C中的轻量级定时器

pthread_cond_signal 可以唤醒多个线程吗?