Error en ordenacion

SergioXp
04 de Febrero del 2010
Hola!!

El error tiene que ser muy tonto pero ni mi profesora ni yo damos con el... el titulo del ejercicio es

Dado un fichero de texto con un maximo de 10 lineas y de 20 caracteres por cada linea, obtener dicho fichero ordenado alfabeticamente por lineas.

Vale, es facil.. debe de serlo, este es el codigo:

#include "funciones.h"

void main ()
{
FILE *fp;
int i=0,j,k;
char cadena [10][20],aux[20],cadena1[20];

fp=fopen ("texto","r");
if (fp==NULL)
{
printf ("ERRORn");
getch();
}
else
{
fgets (cadena[i],20,fp);
while (!feof (fp))
{
i++;
fgets (cadena[i],20,fp);
}
}

for (j=0;j<i;j++)
{
for (k=j;k<i;k++)
{
if (cadena[j]>cadena[k])
{
strcpy (aux,cadena[j]);
strcpy (cadena[j],cadena[k]);
strcpy(cadena[k],aux);
}
}
}
fclose (fp);


fp=fopen ("texto2","w");
if (fp==NULL)
{
printf ("ERRORn");
getch();
}
else
{
for (j=0;j<=i;j++)
{
fputs (cadena[j],fp);
}
}
fclose (fp);

fp=fopen ("texto2","r");
if (fp==NULL)
{
printf ("ERRORn");
getch();
}
else
{
fgets (cadena1,20,fp);
while (!feof (fp))
{
printf ("%sn",cadena1);
fgets (cadena1,20,fp);
}
}
getch();
}

Bueno, tiene 4 lineas el texto:

TEXTO:

ola gola fola tol
asksk ksjdhnbc kll
me llamo sergio
tengo 19 años año
vamooohhh!!

y queda asi:

vamooohhh!!tengo 19 años año
me llamo sergio
asksk ksjdhnbc kll
hola gola fola tol


NO SE CUAL ES EL ERROR!!! xDD

Saludos y Gracias!!

xae
04 de Febrero del 2010
El error está en la comparación, 'char[j] > char[k]', no se estan comparando las cadenas sino dos punteros, el tipo de las variables es char*.

Para comparar cadenas hay que hacer uso de las funciones de la librería string previstas para este fin, strcmp por ejemplo, o bien realizar una función a medida.