<s>atol函数的返回值问题</s>
<s>引用 4 楼 zhao4zhong1 的回复:参考下面：#include <stdio.h> char s[]="123 ab 4"; char *p; int v,n,k; void main() { p=s; while (1) { k=sscanf(p,"%d%n",&v,&n); printf("k,v,n=%d,%d,%d\n",k,v,n); if (1==k) { p+=n; } else if (0==k) { printf("skip char[%c]\n",p[0]); p++; } else {//EOF==k break; } } printf("End.\n"); } //k,v,n=1,123,3 //k,v,n=0,123,3 //skip char[ ] //k,v,n=0,123,3 //skip char[a] //k,v,n=0,123,3 //skip char[b] //k,v,n=1,4,2 //k,v,n=-1,4,2 //End. 看来还是你比较上道，，，明白俺的意思，，我也在考虑用这个函数，应该能解决，不过有一点还不清楚的地方就是：这个函数的格式指定时，能不能有一块的格式写成可有可无的形式，就是如果跟实串匹配成功了，就提取，如果没匹配成功，则也跳过，而不是直接返回个0，就此函数返回，，这种情况是可以用多次调用这个函数来解决，但我觉得那样麻烦，有没有一种高级点的格式写法，只调用一次把这个问题解决掉，，格式比如像： int nRetValue = _stscanf_s(pszBuf,TEXT("%*[ \t+]%[0-9]"),szTextBuf,sizeof(szTextBuf)/sizeof(TCHAR)); if (nRetValue==0) { _tprintf_s(TEXT("Sscanf Return Empty\n")); }</s>
