- 论坛徽章:
- 0
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *getline(void);
int str_compare(const void*,const void*);//读取文字
#define NLINES_MAX 1000
char *linePtr[NLINES_MAX];//字符指针的数组
int main()
{
int n=0;
char **p=NULL;
for( ;n<NLINES_MAX && (linePtr[n]=getline())!=NULL;++n)
;
if(!feof(stdin))
{
if(n==NLINES_MAX)
fputs("sorttext:too many line.\n",stderr);
else
fputs("sorttext:error reading from stdin.\n",stderr);
}
else
{
qsort(linePtr,n,sizeof(char *),str_compare);
for (**p=linePtr;p<linePtr+n;++p)
puts(*p);
}
return 0;
}
#define LEN_MAX 512
char *getline()
{
char buffer[LEN_MAX],*linePtr=NULL;
if(fgets(buffer,LEN_MAX,stdin) !=NULL)
{
size_t len=strlen(buffer);
if(buffer[len-1]=='\n')
buffer[len-1]='\0';
else
++len;
if((linePtr=malloc(len))!=NULL)
strcpy(linePtr,buffer);
}
return linePtr;
}
int str_compare(const void*p1,const void *p2)
{
return strcmp(*(char ** )p1,*(char **)p2);
}
这是C语言核心技术上面的一道例子。可是我用VC++编译不通过!
for (**p=linePtr;p<linePtr+n;++p)这一行报下面的警告,希望哪位大侠帮我分析分析!
C:\Documents and Settings\Administrator\桌面\1.c(27) : warning C4047: '=' : 'char ' differs in levels of indirection from 'char ** ' |
|