atol 函数 的 返回值 问题
引用 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 " ) ) ; }
