好像是刘涛涛面试的题目
// 刘涛涛题目
// 有一个字符串,里面包含一些数字,写一个函数, 把这些数字加起来。
// 比如“我30你40他50”结果就是120。 

运行结果如下:

C:\tst\calc_str>cal
[+] Usage:   cal {#input string}
[-] Example: cal 我30你40他50
[-] ---->Result: 120

C:\tst\calc_str>cal 我30你40他50
input string length = 12
input string is:  我30你40他50
copyed string is: 我30你40他50
i = 3   current string: 30      sum =     30
i = 7   current string: 40      sum =     70
i = 11  current string: 50      sum =    120
---->Result: 120

代码如下:
//////////////////////////////////////////////////////////////////////////////
// 
// 刘涛涛题目
// 有一个字符串,里面包含一些数字,写一个函数, 把这些数字加起来。
// 比如“我30你40他50”结果就是120。 
// coded by aker
//
//////////////////////////////////////////////////////////////////////////////
// 头文件
#include <stdio.h>

//////////////////////////////////////////////////////////////////////////////
// 全局变量

//////////////////////////////////////////////////////////////////////////////
// 参数表

//////////////////////////////////////////////////////////////////////////////
// 入口点
int main(int argc, char* argv[])
{
    char *cPtr=NULL,*cIter=NULL;
    char *buf;
    int len,i,sum=0;
    if (argc < 2)
    {
            printf("[+] Usage:   %s {#input string} \n"
                   "[-] Example: %s 我30你40他50\n"
                   "[-] ---->Result: 120\n",
                   argv[0],argv[0]);
            exit(1);
    }
    
    // 复制字符串
    len = strlen(argv[1]);
    buf = (char*)malloc(len+1); 
    strcpy(buf,argv[1]);
    
    printf("input string length = %d\n",len);
    printf("input string is:  %s\n",argv[1]);
    printf("copyed string is: %s\n",buf);

    // 截断字符串,将其变为多个字符串,计算每个数字字串
    for(i=0;i<len;i++)
    {
        if(buf[i] >= '0' && buf[i] <= '9') // 字符为数字
        {
            cPtr = buf+i;
            cIter = cPtr+1; 
            
            while (*cIter >= '0' && *cIter <= '9') // 寻找数字字符串
            {
                cIter++;
                i++;
            }                
            *cIter = '\0';
            sum += atoi(cPtr);
            printf("i = %d\tcurrent string: %s\tsum = %6d\n",i,cPtr,sum);
        }
    }
    printf("---->Result: %d\n",sum);
    free(buf);
    return 0;
}
//////////////////////////////////////////////////////////////////////////////