elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema al ejecutar programas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al ejecutar programas  (Leído 1,612 veces)
Jrlens

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Problema al ejecutar programas
« en: 29 Agosto 2014, 20:09 pm »

Hola a todxs, el caso es que me vi sumergido en un programa complejo que al ejecutarlo no funcionaba bien pero estaba bien escrito (porque era de un libro). Así que pensé que algo iba mal con el IDE y probe con un programa sencillo en el que usara alguna función de entrada tipo fgets(). Por ejemplo este:

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

char tracks[][80] = {
"I left my heart in Harvard Med School",
"Newark, Newark - a wonderful town",
"Dancing with a Dork",
"From here to maternity",
"The girl from Iwo Jima",
};
void find_track(char search_for[])
{
int i;
for (i = 0; i < 5; i++) {
if (strstr(tracks, search_for))
printf("Track %i: '%s'\n", i, tracks);
}
}
int main()
{
char search_for[80];
printf("Search for: ");
fflush(stdout);
fgets(search_for, 80, stdin);
find_track(search_for);
return 0;
}

El programa busca texto en el array de string e imprime el titulo de la canción si coincide algún término, lo ejecuto, me pide que inserte una palabra y cuando le doy a intro se termina de ejecutar pero no imprime nada. He probado con un compilador Online y se ejecuta perfectamente. ¿Tenéis alguna idea de qué pueda pasar?

P.D:He probado tanto en windows como en linux, varios IDEs y nada de nada.
Gracias por vuestro tiempo.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema al ejecutar programas
« Respuesta #1 en: 29 Agosto 2014, 20:42 pm »

procura usar las etiquetas GeSHi al publicar codigo...

recuerda algo cuando tengas un problema compilando normalmente es error de tu codigo, solo un 0.0001% de las veces va a ser error del compilador

aprende a leer los errores...

tu codigo
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. char tracks[][80] = {
  5.    "I left my heart in Harvard Med School",
  6.    "Newark, Newark - a wonderful town",
  7.    "Dancing with a Dork",
  8.    "From here to maternity",
  9.    "The girl from Iwo Jima",
  10. };
  11.  
  12. void find_track(char search_for[]) {
  13.    int i;
  14.    for (i = 0; i < 5; i++) {
  15.        if (strstr(tracks, search_for))
  16.            printf("Track %i: '%s'\n", i, tracks);
  17.    }
  18. }
  19.  
  20. int main() {
  21.    char search_for[80];
  22.    printf("Search for: ");
  23.    fflush(stdout);
  24.    fgets(search_for, 80, stdin);
  25.    find_track(search_for);
  26.    return 0;
  27. }

el error
Citar
main.cpp:15:38: error: cannot convert 'char (*)[80]' to 'const char*' for argument '1' to 'char* strstr(const char*, const char*)'

estás tratando de leer un char[][] como si fuera un char[]

solo tienes que corregir en el for, porque tienes que usar
Código:
tracks[i]

por otro lado se te da un segundo error...
cuando usas fgets te captura el "enter" como un salto de linea (\n)
agregando
Código:
strtok(search_for, "\n");
luego del salto de linea resuelves ese segundo error...

por ultimo un consejo... si tu tracks tuviera 1.000.000 de canciones y tu resultado es solo la primera, el igual recorreria 1.000.000 de posibles soluciones, para evitarlo usa despues del printf
Código:
break;

eso forzará a salir del for o puedes usar
Código:
return;

eso forazará a salir de la funcion


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Jrlens

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Problema al ejecutar programas
« Respuesta #2 en: 29 Agosto 2014, 21:04 pm »

Perdona me acabo de dar cuenta que el codigo de mi mensaje se ha copiado mal. Este es mi codigo:
Código:
#include <stdio.h>
#include <string.h>


char tracks[][80] = {
"I left my heart in Harvard Med School",
"Newark, Newark - a wonderful town",
"Dancing with a Dork",
"From here to maternity",
"The girl from Iwo Jima",
};
void find_track(char search_for[])
{
int i;
for (i = 0; i < 5; i++) {
if (strstr(tracks[i], search_for))
printf("Track %i: '%s'\n", i, tracks[i]);
}
}
int main()
{
char search_for[80];
printf("Search for: ");
fflush(stdout);
fgets(search_for, 80, stdin);
find_track(search_for);
return 0;
}

Compila perfectamente sin errores y no funciona.

EDITO: el problema era del salto de línea, efectivamente tenías razón. ¿Por qué los compiladores harán eso y en los libros no lo comentan? Que jodienda...

Gracias de nuevo.
« Última modificación: 29 Agosto 2014, 21:12 pm por Jrlens » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ejecutar programas
Programación C/C++
mapers 3 2,472 Último mensaje 25 Agosto 2010, 07:54 am
por fary
Ejecutar programas compilados
Programación C/C++
Treppe 6 3,360 Último mensaje 18 Julio 2011, 11:51 am
por Treppe
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines