我尝试在冒号后读取数字并将值存储在变量中,但是当我打印它时,它会打印一个随机的6位数字。我只需要存储值,而不是' ms'或者'度'。
例如,文本文件与此类似,但重复100组值:
time: 20 ms
temperature: 50.5 degrees
lightvalue: 30
value1: 0.59
value2: 1
value3: 0
----------------------
time: 40 ms
temperature: 37 degrees
lightvalue: 10
value1: 1.57
value2: 0
value3: 1
----------------------
我想将每个数字存储在一个单独的变量中。
以下是我的代码的一部分:
int time[10];
double temperature[10];
int lightvalue[10];
double value1[10];
int value2[10];
int value3[10];
for (int i = 0; i < 100; i++) {
fscanf(infile, "time: %i", &time);
fscanf(infile, "temperature: %d", &temperature);
fscanf(infile, "lightvalue: %i", &light);
fscanf(infile, "value1: %d", &val1);
fscanf(infile, "value2: %i", &val2);
fscanf(infile, "value3: %i", &val3);
//how to skip the "---------------" line?
}
答案 0 :(得分:0)
您的代码包含多个错误。您在迭代中使用了不同的变量名称。你使用了错误的说明符。
for (int i = 0; i < 2; i++) {
fscanf(infile, "time: %d %*s\n", &time[i]);
fscanf(infile, "temperature: %lf %*s\n", &temperature[i]);
fscanf(infile, "lightvalue: %i\n", &light[i]);
fscanf(infile, "value1: %lf\n", &val1[i]);
fscanf(infile, "value2: %i\n", &val2[i]);
fscanf(infile, "value3: %i\n", &val3[i]);
fscanf(infile, "%*s\n"); // to skip the "---------------" line
}
要跳过该行的其余部分,您可以使用与未使用的字符串匹配的%*s
。