函数类型冲突错误,与无法初始化错误 求解
编译无法通过
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);参数类型错了