首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

函数类型冲突异常,与无法初始化异常 求解

2012-03-20 
函数类型冲突错误,与无法初始化错误 求解编译无法通过getline 改个名字,readline掉用该过的名字就没有错误

函数类型冲突错误,与无法初始化错误 求解

编译无法通过
getline 改个名字,readline掉用该过的名字就没有错误,想知道和什么哪里的getline怎么冲突了
无法初始化是什么原因?不明白

代码功能是 输入n行,排序,再输出排序后的n行


C/C++ code
#include <stdio.h>#define ALLOCSIZE 1000#define MAXLINES 5000#define MAXLENS 1000char *lineptr[MAXLINES];int readlines(char *lineptr[], int maxlines);void qsort(char *v[], int left, int right);void writeline(char *lineptr, int nline);main(){    int nline;    if(nline = readline(lineptr, MAXLINES) >= 0){        qsort(lineptr, 0, nline-1);        writeline(lineptr,nline);        return 0;    }else{        printf("error: input too big to sort \n");        return 1;    }        }int getline(char s[],int lim){        int i,c;    for(i = 0; i < lim-1 && (c = getchar()) != EOF && c != '\n';++i)        s[i] = c;    if(c == '\n'){        s[i] = c;        ++i;    }    s[i] = '\0';    return i;}static char allocbuf[ALLOCSIZE];static char allocp = allocbuf;char *alloc(int n){    if(allocbuf + ALLOCSIZE - allocp >= n){            allocp += n;        return allocp - n ;    } else            return 0;}void strcpy(char *f, char *t ){    while(*t++ = *f++)        ;}int readlines(char *lineptr[], int maxlines){    int nline,len;    char *p, line[MAXLINES];    nline = 0;    while((len = getline(line, MAXLENS)) > 0)        if(nline >= maxlines || (p = alloc(len)) == NULL)            return -1;        else{            line[len -1] = '\0';            strcpy(line,p);            lineptr[nline++] = p;        }}int strcmp(char *s, char *t){    for(; *s == *t; s++, t++)        if(*s == '\0')            return 0;    return *s - *t;}void qsort(char *v[], int left, int right){    int i, last;    void swap(char *v[], int i, int j);    if(left >= right)        return;    swap(v, left, (left + right) / 2);    last = left;    for(i = left+1; i < right; i++ )        if(strcmp(v[i], v[left]) < 0)            swap(v, ++last, i);    swap(v, left, last);    qsort(v, left, last-1);    qsort(v, last+1, right);}    void swap(char *v[], int i, int j){    char *temp;    temp = v[i];    v[i] = v[j];    v[j] = temp;}void writeline(char *lineptr, int nline){    int i;        for(i = 0; i < nline ; i++)        printf("%s\n", lineptr[i]);}


[解决办法]
C/C++ code
if(nline = readlines(lineptr, MAXLINES) >= 0)//你这儿的readline应该为readlines
[解决办法]
static char allocbuf[ALLOCSIZE];
static char *allocp = allocbuf;

readline(lineptr, MAXLINES) readline?

void writeline(char *lineptr, int nline);参数类型错了

热点排行