2017-03-29 6 views
0

Ich muss ein Programm machen, das die Wörter nach dem Alphabet von a bis z sortieren kann. das aktuelle Programm, das ich gemacht habe, ist in der Lage, die Wörter zu sortieren, aber nur wenn es in einer neuen Zeile ('\ n') steht.Sortierung von Wörtern nach dem Alphabet

Die Wörter, die weiter in der Zeile sind, sind nicht sortiert. Hier

ist der Code:

#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; 
} 

Was ist das Problem?

+0

Also aus Ihrem Code scheint es, als ob Sie die Zeilen aus einer Textdatei lesen und eine sortierte Liste jedes der Wörter, die erscheinen, ausdrucken/zurückschreiben in eine Datei schreiben? Sie können alle Wörter speichern und der Einfachheit halber Bubble Sort anwenden. –

Antwort

0

ja das ist richtig. Aber ich kann nicht finden, wo es schief geht. Als erstes. ich kann nicht das Programm verwalten, das die Wörter zu einer Textdatei schreibt, und zweitens habe ich keine Idee, wie man dem Programm den wright-Code gibt, um auf alle Wörter und nicht nur die Wörter auf einer neuen Linie zu schauen.

Verwandte Themen