Error en ordenacion
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!!
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!!
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.
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.
