如果我有这样的文本文件:
8f5
我可以很容易地使用
strstr
解析其中的值8
和5
。像这样的:
//while fgets.. etc (other variables and declarations before it)
char * ptr = strstr(str,"f");
if(ptr != NULL)
{
int a = atol(ptr-1); // value of 8
int b = atol(ptr+1); // value of 5
}
但是如果两个小数点长的值呢?我可以
add +2 and -2
到每个atol调用。但我无法预测这些值何时小于或大于10,例如12f6
或
15f15
因为每次的值都是随机的(即一个十进制或两个十进制)。是否有方法检查字符串之间的值的长度,然后使用atol()
? 最佳答案
如果我正确阅读了问题,请使用atol(str)
和atol(ptr+1)
。这将得到由f分隔的两个数字,不管它们有多长。
如果不希望依赖于垃圾字符停止atol解析这一事实,请先设置*ptr = '\0'
。