我想从一个 .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/