[ Foro de C ]

Corregí cosas

19-Sep-2009 15:44
emuletas yp
3 Respuestas

Corregí algunas cosas del codigo fuente, y ahora al ejecutar el out, me sale: segmentation fail o fault o algo así
Este es mi codigo fuente (el final lo tengo lioso,si podeis darme el codigo fuente correcto entero os lo agradecería):

#include <stdio.h>
#include <string.h>

main()
{
char nombres[10][10];
char nombres2[10][10];
int i=10;
int u=10;

for(i=10;i>=0;i--)
{
printf("Introduce un nombre de 10 letras de máximo (te quedan %s).\n", i);
gets(nombres[i]);
}

printf("Ahora otros diez nombres y el programa comprobaras si estan entre los diez que has escrito. Introduce fin cuando quieras salir");
do
{
for (u=10;u>=0;u--)
{
gets(nombres2[u]);
if (strstr (nombres, nombres2[u])!=NULL)printf("El nombre %s esta entre los diez anteriores", nombres2);
else ("El nombre %s no esta entre los diez anteriores", nombres2);
}
} while (strstr (nombres2, "fin")==NULL);
}

09-Oct-2009 22:04
Nacho Cabanes (+83)

El "segmentation fault" que obtienes es porque intentas acceder al dato número 10, y no puedes hacerlo.

Si es un array de 10 datos, estarán numerados del 0 al 9, por lo que el "for" debería ser:

for(i=9;i>=0;i--)


09-Oct-2009 22:51
emuletas yp

DESESPERACIÓN!

Codigo fuente:

#include <stdio.h>
#include <string.h>

main()
{
char nombres[10];
char nombres2[10];
int i=9;
int u=9;

for(i=9;i>=0;i--)
{
printf("Introduce un nombre de 10 letras de máximo (te quedan %d).\n", i);
gets(nombres[i]);
}

printf("Ahora otros diez nombres y el programa comprobaras si estan entre los diez que has escrito. Introduce fin cuando quieras salir");
do
{
for (u=9;u>=0;u--)
{
gets(nombres2[u]);
if (strstr (nombres, nombres2[u])!=NULL)printf("El nombre %s esta entre los diez anteriores", nombres2);
else ("El nombre %s no esta entre los diez anteriores", nombres2);
}
} while (strstr (nombres2, "fin")==NULL);
}


En cuanto meto el primer nombre me da un segmentation fault otra vez.

Porfavor, reescribid el codigo fuente y mostradmelo para que lo pueda observar como si fuera un ejemplo. El final lo tengo mal. Porfavor, reescribidlooo :'(


10-Oct-2009 01:03
Nacho Cabanes (+83)

Claro que te da "segmentation fault": no has cambiado sólo el "for", sino que también has modificado las variables:

char nombres[10];
char nombres2[10];

en vez de los originales (y correctos)

char nombres[10][10];
char nombres2[10][10];

Por cierto, no hace falta que hagas "int i=9;", basta con "int i;", porque le das valor en la orden "for".






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)