这里是代码打印复制M次打印最长的字符串复制M次
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
#define M 1
#define MAXN 5000000
char c[MAXN],*a[MAXN];
int pstrcmp(char **p,char **q){ return strcmp(*p,*q) ;}
int comlen(char *p,char *q){
int i=0;
while (*p &&(*p++==*q++)){
i++;
}
return i;
}
int main(){
int maxlen=-1;
int maxi;
int ch,n=0;
while ((ch=getchar())!=EOF){
a[n]=&c[n];
c[n++]=ch;
}
c[n]=0;
qsort(a,n,sizeof(char *),pstrcmp);
for (int i=0;i<n-M;i++)
if (comlen(a[i],a[i+M])>maxlen){
maxlen=comlen(a[i],a[i+M]);
maxi=i;
}
printf("%.*s\n",maxlen,a[maxi]);
return 0;
}
但这里最长的字符串是错误
1>c:\users\david\documents\visual studio 2010\projects\longest_repeted\longest_repeated.cpp(33): error C2664: 'qsort' : cannot convert parameter 4 from 'int (__cdecl *)(char **,char **)' to 'int (__cdecl *)(const void *,const void *)'
1> None of the functions with this name in scope match the target type
[通过在C的qsort时警告](可能重复http://stackoverflow.com/questions/2561697/warning-when-using-qsort -in-c) – kennytm 2010-07-23 07:40:17
**永远不要**使用宏('#define')来创建const。 – 2010-07-23 08:06:20