假设我有一个文件:
f56,5 d23,4
我正在获取'f'和逗号之后的值(和d一样),所以我这样做: (使用fgets读取文件时)
while (fgets(buf,100,file) != NULL)
{
temp = strstr(buf,"f"); //where temp is a (char * )
if(temp != NULL)
{
//An int defined previously
x = atol(temp+1); //get the value 56
temp = strstr(buf,","); //get the value 5
y = atol(temp+1); //get the value 5
}
temp = strstr(buf,"d");
if(temp != NULL)
{
a = atol(temp+1); //get the value 24
temp = strstr(buf,","); //get the value 4?
b = atol(temp+1); //get the value 4?
}
}
然而,这种工作,a和b的值不正确,a有时是真的,但是b总是y的值(先前的逗号值)。我不确定如何继续这里,我尝试使用另一个指针在代码中使用strstr
,但这似乎不起作用,任何帮助将不胜感激。
答案 0 :(得分:2)
但是
的值b
始终是y
(之前的逗号值)
这是因为您开始再次从头开始搜索逗号,因此不会将逗号与'd'
相关联,而是会再次与'f'
关联。
要解决此问题,请替换此行
temp = strstr(buf, ","); //get the value 4?
用这个:
temp = strstr(temp+1, ","); //yes, get the value 4!
这将开始在'd'
之后搜索下一个逗号,为您提供正确的结果。