一道中興筆試題
要求是摳出給定字符串中的所有數(shù)字然后排序輸入
做法如下:
#include <cstdlib>
#include <iostream>
#include <string.h>
#include <ctype.h>
#include <algorithm>
#include <iterator>
using namespace std;
void output(char* str,int len)
{
if(str == NULL || len <= 0)
return;
int* data = (int*)malloc(len);
char* tmp = (char*)malloc(len+1);
memset(data,0,len);
memset(tmp,0,sizeof(char)*len);
int index = 0;
int i = 0;
int j = 0;
int flag = isdigit(str[0]);
while(1)
{
if(i==len || i+j == len+1)
break;
if(isdigit(str[i+j]) == 0 && flag == 0)
{
i=i+j+1;
j=0;
flag = isdigit(str[i+j]);
}
else if(isdigit(str[i+j]) == 0 && flag != 0)
{
memset(tmp,0,sizeof(char)*(len+1));
strncpy(tmp,str+i,j);
data[index++] = atoi(tmp);
flag = 0;
}
else
{
j++;
}
}
std::sort(data,data+index);
std::copy(data,data+index,std::ostream_iterator<int>(std::cout," "));
free(tmp);
free(data);
}
int main(int argc,char *argv[])
{
char input[] = "33k&99+r5sw1f10gd4vc511gc3";
output(input,strlen(input));
system("PAUSE");
return EXIT_SUCCESS;
}
嚴(yán)格說來不應(yīng)該使用stl中的函數(shù)和模板但是為了簡便起見還是這么寫吧
另外一直我一直己寫strcpyn函數(shù)用于復(fù)制給定字符串沒發(fā)現(xiàn)庫中有一個(gè)類型的strncpy函數(shù)