我试图读取循环中每一行的文件,并将值存储在结构中。
当fscanf面对一个空字符串时,它读取所有内容,直到行尾,行中的其他字段被读取为零。是否有方法指定fscanf以将空格作为字段读取。
以下示例,
文件数据库:
tick31486081-tick31486081.mtd ,00:00:00:00:01:0e-31486081 , ,0,0,245
tick31486096-tick31486107-video1.ts ,00:00:00:00:01:0e-31486081 , ,1155072,5005312,5005312
tick31486080-tick31486080.mtd ,00:00:00:00:01:0e-31486080 , ,0,0,271
读取数据后:
tick31486081-tick31486081.mtd , 00:00:00:00:01:0e-31486081 , **,0,0,245** ,0,0,0
tick31486096-tick31486107-video1.ts , 00:00:00:00:01:0e-31486081 , **,1155072,5005312,5005312** ,0,0,0
tick31486080-tick31486080.mtd , 00:00:00:00:01:0e-31486080 , **,0,0,271** ,0,0,0
有没有一种方法可以让我不忽略读取字段的空间?
FILE *fp = fopen (FILE, "r");
if (fp)
{
int retval;
int numRead = 0;
while (numRead != EOF)
{
Node_t *node = calloc (1, sizeof(Node_t));
if (node)
{
numRead = fscanf (fp, "%40s ,%30s ,%33s ,%d,%d,%d\n",
node->name, node->reid, node->hash,
&node->startOffset, &node->stopOffset, &node->length);
printf(" %s ,%s ,%s ,%d,%d,%d",
node->name, node->reid, node->hash,
node->startOffset, node->stopOffset, node->length);
}
}
retval = fclose (fp);
}