2017-03-29 171 views
0

我需要制作一个程序,可以根据字母从a到z对字进行排序。我所做的当前程序能够对单词进行排序,但只有在新行('\ n')的情况下才能排序。根据字母排序字

行中的单词没有排序。

下面是代码:

#include <stdio.h> 
#include <stdlib.h> 
#include <strings.h> 
#define SIZE 30 
#define LEN 31 

void bron (char *fnamer) 
{ 
printf("\nGeef de naam van de in te lezen txt file: \n"); 
gets(fnamer); 
//getchar(fnamer); 
} 

void uitgave (char *fnamer2) 
{ 
printf("\nGeef de naam van de nieuwe geschreven txt file: \n"); 
gets(fnamer2); 
//getchar(fnamer2); 
} 

int main() 
{ 
char name[LEN][SIZE]; 
char hold[LEN] ; 
int i,j ; 
int last ; 
FILE *fp; 
FILE *fp2; 

char ch; 
char fnamer[1000]; 
char fnamer2[1000]; 

bron(fnamer); 

fp=fopen(fnamer,"r"); 
if(fp==NULL) 
{ 
    printf("Error!"); 
    exit(1); 
} 
uitgave(fnamer2); 
fp2=fopen(fnamer2,"w"); 
if(fp2==NULL) 
{ 
    printf("Error!"); 
    exit(1); 
} 
else 
{ 

    for(i = 0 ; !feof(fp) ; i++) 

    { 
     fgets(name[i] , LEN, fp); 
    } 
    last = i - 1 ; 

    fclose(fp); 

    for (i = last ; i > 0 ; i--) 
     for (j = 1 ; j <= i ; j++) 

      if (strcmp(name[j],name[j - 1]) < 0) 
      { 
       strcpy(hold,name[j]) ; 
       strcpy(name[j],name[j - 1]) ; 
       strcpy(name[j - 1],hold) ; 
      } 

    for (i = 0 ; i <= last ; i++) 
    { 
     printf("%s",name[i]) ; 
     // fprintf("%s", name [i]); herzien 
    } 

} 
printf("\n%s \t%s",fnamer,fnamer2) ; 
//fprintf(fp, %s) ; // herzien 
fclose(fp2); 
return 0; 
} 

问题是什么?

+0

因此,从您的代码中,您似乎想要读取文本文件中的行,并将每个出现的单词的排序列表打印出来/写回到文件中?你可以存储所有的单词,并为了简单起见,应用气泡排序。 –

回答

0

是的,这是正确的。但我无法找到它出错的地方。首先。我无法管理将文字写入文本文件的程序范,然后我不知道如何让程序使用赖特代码来查看所有单词,而不仅仅是新单词。