2017-03-29 169 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

是的,這是正確的。但我無法找到它出錯的地方。首先。我無法管理將文字寫入文本文件的程序範,然後我不知道如何讓程序使用賴特代碼來查看所有單詞,而不僅僅是新單詞。