在字符串中找出連續最長的數字串

題目:函數

寫一個函數,它的原形是 int continumax(char *outputstr,char *intputstr)code

功能:內存

在字符串中找出連續最長的數字串,並把這個串的長度返回,字符串

並把這個最長數字串付給其中一個函數參數 outputstr  所指內存。input

例如:"abcd12345ed125ss123456789" 的首地址傳給 intputstr 後,函數將返回 9,io

outputstr  所指的值爲 123456789編譯


題目也比較簡單,有一點須要注意class

代碼實現(GCC編譯經過):di

#include "stdio.h"
#include "stdlib.h"

int continumax(char * outputstr,char * inputstr);

int main(void)
{
	char *in = "abcd12345ed125dd123456789";
	char *out = (char *)malloc(sizeof(char)*100);
	
	int i = continumax(out,in);

	printf("%d\n",i);
	printf("%s\n",out);
	return 0;
}

int continumax(char * outputstr, char * inputstr)
{
	int len,max,i;
	char *p;

	len = max = 0;

	//若寫成while(inputstr != '\0'),當字符串結尾出現最長數字串則沒法處理
	while(1)
	{	
		if(*inputstr >= '0' && *inputstr <= '9')
		{
			len++;
		}
		else
		{
			if(len >max)
			{
				max = len;
				p = inputstr - len;
			}
			len = 0;
		}
		if(*inputstr++ == 0) 
			break;
	}

	for(i = 0;i<max;i++)
		*outputstr++ = *p ++;

	*outputstr = '\0';

	return max;
}
相關文章
相關標籤/搜索