在C中冒号后得到数字

时间:2017-12-13 02:25:42

标签: c input scanf

我尝试在冒号后读取数字并将值存储在变量中,但是当我打印它时,它会打印一个随机的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?
}

1 个答案:

答案 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