如何在 C 语言的文本文件中读取由','分隔的数据



我想知道如何从文本文件中读取数据,其数据由逗号分隔;例如,文本文件的第1行说:(名字,整数,整数)。

所以我试着用这段代码来读取代码,但它没有工作:

while (fscanf(ifp, "%15s,%d,%d", stationName, &stationDistance, &stationDirection ) == 2) {
    strcpy(q[fileCounter].name, stationName);
    q[fileCounter].distance = stationDistance;
    q[fileCounter].direction = stationDirection;
    printf ("Station Name: %s t Distance to Central: %d t Direction from Central: %d n", q[fileCounter].name, q[fileCounter].distance, q[fileCounter].direction);
    fileCounter++;
}

如果Name包含空格,那么您正在使用的格式说明符将停在那里并失败,您将需要

while (fscanf(ifp, "%15[^,],%d,%d", 
           stationName, &stationDistance, &stationDirection) == 3)
 {
 }

[说明符匹配您在[]中指定的字符集,例如"%[0-9]"匹配从09的所有数字,^符号告诉fscanf()匹配任何不是[]所包含的字符并跟随^,所以您正在匹配除了,之外的任何东西,这是您想要的。

相比之下,"%15s"说明符消耗所有字符,直到出现15个字符或isspace(chr) != 0中出现的空白字符,这就是为什么我认为您的fscanf()只匹配三个值中的两个。

你正在比较fscanf()的返回值与2而不是3,我猜是因为它返回的是2而不是3,你知道,因为否则没有进入循环,那么这是一件非常糟糕的事情,因为你正在导致未定义的行为,因为三个参数中的一个可能还没有被scanf()初始化,你复制strcpy()的名称并存储整数。

相关内容

  • 没有找到相关文章

最新更新