第 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, 17 outputstr 所指的值为 123456789 start time = 16:11 end time = 16:40 */ #include <stdio.h> #include <stdlib.h> #include <string.h> 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; }