我在不同的行上有一个文本文件,其中包含以下格式的点
LONG,LONG
我可以成功读取每一行并将其打印出来,但是我如何解析C中的字符串,以便我自己得到每个长点?
谢谢!
答案 0 :(得分:1)
有很多解决方案。
一个是阅读该行,阅读第一个long
,strtol
找到后面带有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()
的返回值是一个非常好的主意,这是成功读取值的数量。