如果我有这样的文本文件:

8f5

我可以很容易地使用strstr解析其中的值85
像这样的:
//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'

07-24 12:56