[ Foro de C ]
Corregí cosas
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);
}
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--)
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 :'(
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.)