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?
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. –