我有一个包含数据的文件,这里是数据示例:
S:BMW;328i;A8;2.0 S:GMC;K1500 SIERRA 4X4;A4;5.3 C:SUBCOMPACT;M5;X C:PICKUP TRUCK;A4;X
我想扫描行中的第一个字符并将数据存储在A
如果 A 是 'S'
,我想将剩余的数据存储在 B
、C
、 的行中D
, E
如果 A 是 'C'
,我想将剩余的数据存储在 F
、G
、 的行中H
如何为文件中的每一行执行此操作?
这就是我为另一个文件所做的,其中每一行都具有相同的格式:
int currentSize = 0;
while(fscanf(fp, "%d,%[^,],%[^,],%[^,],%f,%[^,],%c,%f,%f,%f,%f", &data[currentSize].year, &data[currentSize].make, &data[currentSize].model,
&data[currentSize].type, &data[currentSize].engineSize, &data[currentSize].transmissionType, &data[currentSize].fuelType, &data[currentSize].city,
&data[currentSize].hwy, &data[currentSize].fuelPerYear, &data[currentSize].co2) != EOF) {
currentSize++;
}
return currentSize;
最佳答案
可以使用fgets()
获取每一行的内容,然后使用sscanf()
根据第一个字符获取每个字段:
char line[MAX_CHAR];
while (fgets(line, sizeof line, fp) != NULL)
{
switch(line[0])
{
case 'S':
//process line using sscanf()
break;
case 'C':
//process line using sscanf()
break;
//...
}
}
关于c - 如何 fscanf 文件并根据行的第一个字符将行中的数据存储在不同的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22705250/