如何从C中的文本文件中读取数据点

时间:2014-11-06 16:44:08

标签: c parsing input

我在不同的行上有一个文本文件,其中包含以下格式的点

LONG,LONG

我可以成功读取每一行并将其打印出来,但是我如何解析C中的字符串,以便我自己得到每个长点?

谢谢!

3 个答案:

答案 0 :(得分:1)

有很多解决方案。

一个是阅读该行,阅读第一个longstrtol找到后面带有strchr的逗号的位置,然后从那里读取第二个数字。

另一个解决方案是读取该行,并将其传递给sscanf函数,其格式为接受两个逗号分隔的LONG

答案 1 :(得分:1)

如果您已经拥有该行,最简单的方法是使用sscanf()执行此操作:

long a, b;

if(sscanf(line, "%ld,%ld", &a, &b) == 2)
{
  /* Successfully parsed two long integers, now store them somewhere I guess. */
}

请注意,检查sscanf()的返回值是个好主意,这可以防止您错误地接受非法数据并获取未定义的结果。

如果您需要更多控制权,也可以通过多个步骤执行此操作,如@dasblinkenlights建议的那样。您可以使用strtol()从行的开头解析第一个数字,如果成功则查找逗号,然后解析第二个数字。它可以sscanf()更快,但我不会对这么简单的事情抱太大期望。

答案 2 :(得分:0)

如果您说您已经获得了该行,请使用scanf()的字符串变体:

char* line;
long long1;
long long2;

sscanf(line, "%ld,%ld", &long1, &long2);

确实正如@unwind在他的+1回答中建议的那样,检查scant()的返回值是一个非常好的主意,这是成功读取值的数量。