请帮忙看下,如何输入知道文件结束。
您好!我有两个问题想问您。第一个问题描述
输入若于书名,每个书名长度不超过100,将书按ASCII顺序,从小到大排序。
输入
输入书名个数不定,直到文件结束为止。
输出
将字符串按ASCII码从小到大排序后输出。
输入样列
Java
Basic
C#
Fortran
Delphi
输出样例
Basic
C#
Delphi
Fortran
Java
我的程序:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
void SortStr(char *a[],int n){
char b[100],*temp=(char*)malloc(sizeof(char)*200);
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(a[i],a[j])>0){
strcpy(temp,a[j]);
strcpy(a[j],a[i]);
strcpy(a[i],temp);
}
free(temp);
}
int main(void){
char p[200],*q[200];
int i,n=0;
scanf("%s",p);
while(p[0]!='#'){
q[n]=(char*)malloc(sizeof(char)*strlen(p));
strcpy(q[n],p);
scanf("%s",p);
n++;
}
SortStr(q,n);
for(i=0;i<n;i++){
printf("%s\n",q[i]);
free(q[i]);
}
return 0;
}
第二个问题描述
输入若于书名,每个书名长度不超过100,将书按ASCII顺序,从小到大排序。
请注意:这些书名中可能有“空格”。
输入
第一个为字符串个数m,然后输入m个书名。
输出
将字符串按ASCII码从小到大排序后输出。
输入样列
5
Java
Basic
C#
Fortran
Delphi
输出样例
Basic
C#
Delphi
Fortran
Java
我的程序:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
void SortStr(char *a[],int n){
char b[100],*temp=(char*)malloc(sizeof(char)*100);
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strcmp(a[i],a[j])>0){
strcpy(temp,a[j]);
strcpy(a[j],a[i]);
strcpy(a[i],temp);
}
free(temp);
}
int main(void){
char b,p[100],*q[100];
int i,n;
scanf("%d",&n);
getchar();
if(n>200){
printf("Overflow!");
return 0;
}
for(i=0;i<n;i++){
scanf("%s",p);
q[i]=(char*)malloc(sizeof(char)*strlen(p));
strcpy(q[i],p);
}
SortStr(q,n);
for(i=0;i<n;i++){
printf("%s\n",q[i]);
free(q[i]);
}
return 0;
}
您能帮我看看哪错了吗?