Yêu cầu: Viết chương trình sắp xếp các dòng kí tự được nhập từ bàn phím theo thứ tự ABC.
#include <stdio.h>
#include<stdlib.h>
#define MAXLINES 5000
#define MAXLEN 1000
char *lineptr[MAXLINES];
int read_lines(char *lineptr[],int MAXLINES1);
void write_lines(char *lineptr[], int nlines);
void comparison(char *lineptr[],int nlines);
int getline(char line[],int MAXLENS);
void strcpy(char *p,char line[]);
int main()
{
int nlines;
if((nlines=read_lines(lineptr,MAXLINES))>=0)
{
comparison(lineptr,nlines);
write_lines(lineptr,nlines);
return 0;
}
else
{
printf("error:input too big to sort\n");
return 1;
}
}
int read_lines(char *lineptr[],int MAXLINES1)
{
int len,nlines=0;
char *p,line[MAXLEN];
while((len =getline(line,MAXLEN))>0)
if(nlines>=MAXLINES1 ||(p=(char*)malloc(len))==NULL)
return -1;
else
{
line[len -1]='\0';
strcpy(p,line);
lineptr[nlines++]=p;
}
return nlines;
}
void write_lines(char *lineptr[],int nlines)
{
int i;
for(i=0; i<nlines; i++)
printf("%s\n",lineptr[i]);
}
int getline(char line[],int MAXLENS)
{
int i;
char c;
while(i=0;i<MAXLENS-1&&(c=getchar())!=EOF&&c!='\n';i++)
line[i]=c;
if(c=='\n')
{
line[i]='\n';
i++;
}
line[i]='\0';
return i;
}
void strcpy(char *p,char line[])
{
int i=0;
p=line;
while((*p=line[i])!='\0')
{
i++;
p++;
}
}
void comparison(char *lineptr[],int nlines)
{
char *c;
for(int i=0; i<nlines; i++)
{
for(int j=0; j<nlines; j++)
{
if(lineptr[i][1]>lineptr[j][1])
{
lineptr[i]=c;
lineptr[i]=lineptr[j];
lineptr[j]=c;
}
}
}
}
Báo lỗi ở
while(i=0; i<MAXLENS-1&&(c=getchar())!=EOF&&c!='\n'; i++)
line[i]=c;

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?