第 25 题(字符串):
写一个函数,它的原形是 int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数 outputstr 所指内存。例如:"abcd12345ed125ss123456789" 的首地址传给 intputstr 后,函数将返回 9, outputstr 所指的值为 123456789
不难,关键注意outputstr需要传入地址的地址,这样就可以开辟空间并返回了
/*第 25 题(字符串):写一个函数,它的原形是 int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数 outputstr 所指内存。例如:"abcd12345ed125ss123456789" 的首地址传给 intputstr 后,函数将返回 9, 17outputstr 所指的值为 123456789start time = 16:11end time = 16:40*/#include#include #include int continumax(char *outputstr,char *intputstr){ int maxlen = 0; int len = 0; char * maxstart = NULL; char * start = NULL; while(*intputstr != '\0') { if(*intputstr >= '0' && *intputstr <= '9') { if(len == 0) { start = intputstr; } len++; } else { maxstart = (len > maxlen) ? start : maxstart; maxlen = (len > maxlen) ? len : maxlen; len = 0; } intputstr++; } maxstart = (len > maxlen) ? start : maxstart; maxlen = (len > maxlen) ? len : maxlen; *(char **)outputstr = (char *)malloc(maxlen * sizeof(char)); memcpy(*(char **)outputstr, maxstart, maxlen * sizeof(char)); return maxlen;}int main(){ char * s = "abcd12345ed125ss123456789"; char * out = NULL; int len = continumax((char *)&out, s); return 0;}