c - 如何 fscanf 文件并根据行的第一个字符将行中的数据存储在不同的变量中?

标签 c file scanf

我有一个包含数据的文件,这里是数据示例:

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',我想将剩余的数据存储在 BC 的行中D, E

如果 A 是 'C',我想将剩余的数据存储在 FG 的行中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/

相关文章:

c - 为什么“长数据类型数组具有十六进制值?

c - 合并两个文件,为什么在末尾添加一个新行? C编程

Java/Android : Byte to file not saving?

c - scanf() 在 malloc 结构成员中不起作用

C 程序跳过字符串中的第一个字符

c - 从标准输入中划分数字和字符串

c - 自定义库的常用位置

c - 从 execvp 将 stdout 写入文件

php - 如何创建触发文件下载的链接?

C fscanf - 格式化输入