Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: goofyalas en 14 Noviembre 2016, 14:28 pm



Título: [Error] ld returned 1 exit status
Publicado por: goofyalas en 14 Noviembre 2016, 14:28 pm
me aparece este mensaje y nose porke se debe :c alguien que me ayude :c

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include "dibujos.h"
  4. #include <stdlib.h>
  5. #include <ctype.h>
  6.  
  7. #define plb1 "alfajor" //palabras incognitas
  8. #define plb2 "cazador"
  9. #define plb3 "pulento"
  10. #define plb4 "maquina"
  11. #define plb5 "gozador"
  12. #define plb6 "chilito"
  13. #define plb7 "donador"
  14. #define plb8 "arrojar"
  15. #define plb9 "windiws"
  16. #define plb0 "ganador"
  17.  
  18. void Seleccion_de_palabra (char *, int *);
  19. void Ingreso_de_letra(int *,char *, char *);
  20. void Verificador_de_letra(char *, char *, char *, char *, char *, char *, char *, int *, char *, char *);
  21. void Verificador_de_error(int *, char *, int *, char *, char *, char *, char *, char *, int *);
  22. void Verificador_de_termino(int *, char *, char *, int *);
  23. void Volver_a_jugar(char *);
  24. void Reinicio_de_var_importantes(char *, char *, int *, int *, char *, char *, char *, char *, char *, int *);
  25.  
  26.  
  27.  
  28. int main (){                         //funcion main ejecuta las demas funciones. Entrada nada retorno nada
  29. char plb[10];         //Variable la cual toma el valor de las palabras incognitas
  30. char progress [16]="_ _ _ _ _ _ _";   //variable la cual mostrara lo que lleva el jugador
  31. int vida=0;             //variable que llevara el numero de vidas
  32. char again [3]="s";       //variable que hara reiniciar el juego
  33. int cont_1=0;           //variable de contension para ver si la letra ingresada coincide con alguna letra de la palabra  
  34. char cont_2 [10]="xxxxxxx";     //variable de contension que sirve para llevar una cuenta de las letras que ya se descubrieron
  35. int cont_3=0;           //variable de contension que ayuda a salir de la iteracion de probar letras
  36. char letra [2]="a";       //variable que almacena la letra ingresada
  37. int num=0;              //variable que elige la palabra que se usara
  38. char a[2];            //variables que almacenan letras erroneas
  39. char e[2];
  40. char i[2];
  41. char o[2];
  42. char u[2];
  43. int cont=0;             //variable de contension que sirve para asgnar letras erroneas
  44. while (again [0]=='s'){
  45. Seleccion_de_palabra(&plb[10], &num);
  46.    while (cont_3==0){
  47.    Ingreso_de_letra(&vida, &progress[16], &letra[2]);
  48.    Verificador_de_letra(&letra[2], &a[2], &e[2], &i[2], &o[2], &u[2], &progress[16], &cont_1, &cont_2[10], &plb[10]);
  49.    Verificador_de_error(&cont_1, &letra[2], &vida, &a[2], &e[2], &i[2] , &o[2], &u[2], &cont);
  50.    Verificador_de_termino(&vida, &plb[10], &cont_2[10], &cont_3);
  51.    }
  52.    Volver_a_jugar(&again[3]);
  53.    Reinicio_de_var_importantes(&cont_2[10], &progress[16], &vida, &cont_3, &a[2], &e[2], &i[2] , &o[2], &u[2], &cont);
  54. }
  55. return 0;
  56. }
  57. void Seleccion_de_palabra (char *plb[10], int *num){        //en esta funcion se selecciona una palabra para ser ocupada.Entrada struct variables retorno nada
  58. if (*num==10){
  59. *num=*num-10;
  60. }
  61. switch (*num){
  62. case 0:
  63. strcpy (*plb,plb1);
  64. *num++;
  65. break;
  66. case 1:
  67. strcpy (*plb,plb2);
  68. *num++;
  69. break;
  70. case 2:
  71.    strcpy (*plb,plb3);
  72. *num++;
  73. break;
  74. case 3:
  75. strcpy (*plb,plb4);
  76. *num++;
  77. break;
  78. case 4:
  79.    strcpy (*plb,plb5);
  80. *num++;
  81. break;
  82. case 5:
  83. strcpy (*plb,plb6);
  84. *num++;
  85. break;
  86. case 6:
  87. strcpy (*plb,plb7);
  88. *num++;
  89. break;
  90. case 7:
  91.    strcpy (*plb,plb8);
  92. *num++;
  93. break;
  94. case 8:
  95. strcpy (*plb,plb9);
  96. *num++;
  97. break;
  98. case 9:
  99. strcpy (*plb,plb0);
  100. *num++;
  101. break;
  102. }
  103. }
  104. void Ingreso_de_letra(int *vida,char *progress[16], char *letra[2]){             //en esta funcion se ingresa una letra intentando atinar a la palabra incognita .Entrada struct variables retorno nada
  105. system("cls");
  106. TituloJuego();
  107. switch (*vida){
  108. case 0:
  109. SinAhorcado();
  110. break;
  111. case 1:
  112. Cabeza();
  113. break;
  114. case 2:
  115. Tronco();
  116. break;
  117. case 3:
  118. BrazoIzquierdo();
  119. break;
  120. case 4:
  121. BrazoDerecho();
  122. break;
  123. case 5:
  124. PiernaIzquierda();
  125. break;
  126. case 6:
  127. PiernaDerecha();
  128. break;
  129. }
  130.    printf("\n\n\t%s", *progress);
  131.    printf("\n\n");
  132.    do{
  133.        if (!isalpha(*letra[0])){
  134.         printf("dato ingresado no corresponde\n");
  135. }
  136. printf("ingrese  una letra:\n");
  137.        scanf("%s", & *letra [0]);
  138.        *letra[0]=tolower(*letra[0]);
  139. }while(!isalpha(*letra[0]));
  140. system("cls");
  141. }
  142. void Verificador_de_letra(char *letra[2], char *a[2], char *e[2], char *i[2], char *o[2], char *u[2], char *progress[16], int *cont_1, char *cont_2[10], char *plb[10]){         //en esta funcion se verifica la letra comparandola con las letras de la palabra incognita.Entrada struct variables retorno nada
  143. while (*letra[0]!=*a[0] && *letra[0]!=*e[0] && *letra[0]!=*i[0] && *letra[0]!=*o[0] && *letra[0]!=*u[0]){
  144.    if (*plb [0]==*letra[0]){
  145.    *progress [0]=*letra[0];
  146.    *cont_1=1;
  147.    *cont_2 [0]='g';
  148.    }
  149.    if (*plb [1]==*letra[0]){
  150.    *progress [2]=*letra[0];
  151.    *cont_1=1;
  152.    *cont_2 [1]='a';
  153.    }
  154.    if (*plb [2]==*letra[0]){
  155.    *progress [4]=*letra[0];
  156.    *cont_1=1;
  157.    *cont_2 [2]='n';
  158.    }
  159.    if (*plb [3]==*letra[0]){
  160.    *progress [6]=*letra[0];
  161.    *cont_1=1;
  162.    *cont_2 [3]='a';
  163.    }
  164.    if (*plb [4]==*letra[0]){
  165.    *progress [8]=*letra[0];
  166.    *cont_1=1;
  167.    *cont_2 [4]='s';
  168.    }
  169.    if (*plb [5]==*letra[0]){
  170.    *progress [10]=*letra[0];
  171.    *cont_1=1;
  172.    *cont_2 [5]='t';
  173.    }
  174.    if (*plb [6]==*letra[0]){
  175.    *progress [12]=*letra[0];
  176.    *cont_1=1;
  177.    *cont_2 [6]='e';
  178.    }
  179.    break;
  180. }
  181. }
  182. void Verificador_de_error(int *cont_1, char *letra[2], int *vida, char *a[2], char *e[2], char *i[2], char *o[2], char *u[2], int *cont){         //en esta funcion se verfica el error al ingresar la letra .Entrada struct variables retorno nada
  183. if (*cont_1==0){
  184. while (*letra[0]!=*a[0] && *letra[0]!=*e[0] && *letra[0]!=*i[0] && *letra[0]!=*o[0] && *letra[0]!=*u[0]){
  185. *vida++;
  186. break;
  187. }
  188. switch (*cont){
  189. case 0:
  190. *a[0]=*letra[0];
  191. *cont++;
  192. break;
  193. case 1:
  194.    *e[0]=*letra[0];
  195.    *cont++;
  196. break;
  197. case 2:
  198. *i[0]=*letra[0];
  199. *cont++;
  200. break;
  201. case 3:
  202. *o[0]=*letra[0];
  203. *cont++;
  204. break;
  205. case 4:
  206. *u[0]=*letra[0];
  207. *cont++;
  208. break;
  209. default:
  210. break;
  211. }
  212. }
  213. *cont_1=0;
  214. }
  215. void Verificador_de_termino(int *vida, char *plb[10], char *cont_2[10], int *cont_3){       //en esta funcion se decide si el jugador gano o perdio.Entrada struct variables retorno nada
  216. if (*vida==6){
  217. *cont_3=1;
  218. system("cls");
  219.        TituloJuego();
  220.        MensajePerdiste();
  221.        printf("\n\n");
  222.        printf("La palabra era %s\n", *plb);
  223.        system("pause");
  224. }
  225. if (*cont_2 [0]=='g' && *cont_2 [1]=='a' && *cont_2 [2]=='n' && *cont_2 [3]=='a' && *cont_2 [4]=='s' && *cont_2 [5]=='t' && *cont_2 [6]=='e'){
  226. *cont_3=1;
  227. system("cls");
  228.        TituloJuego();
  229.        MensajeGanaste();
  230.        printf("\n\n");
  231.        printf("La palabra era %s\n", *plb);
  232.        system("pause");
  233. }
  234. }
  235. void Volver_a_jugar(char *again[3]){               //en esta funcion se le da la opcion al usuario para volver a jugar.Entrada struct variables retorno nada
  236. printf ("¿Quieres volver a jugar? \n Si es asi escribe si , sino escribe no \n");
  237. scanf ("%s", *again);
  238. *again[0]=tolower(*again[0]);
  239. }
  240. void Reinicio_de_var_importantes(char *cont_2[10], char *progress[16], int *vida, int *cont_3, char *a[2], char *e[2], char *i[2], char *o[2], char *u[2], int *cont){  //en esta funcion se reinicia los valores de algunas variables claves para el prgrama .Entrada struct variables retorno nada
  241. *cont_3=0;
  242. *vida=0;
  243. *cont_2 [0]='x';
  244. *cont_2 [1]='x';
  245. *cont_2 [2]='x';
  246. *cont_2 [3]='x';
  247. *cont_2 [4]='x';
  248. *cont_2 [5]='x';
  249. *cont_2 [6]='x';
  250. *progress [0]='_';
  251. *progress [2]='_';
  252. *progress [4]='_';
  253. *progress [6]='_';
  254. *progress [8]='_';
  255. *progress [10]='_';
  256. *progress [12]='_';
  257. *a[0]=' ';
  258. *e[0]=' ';
  259. *i[0]=' ';
  260. *o[0]=' ';
  261. *u[0]=' ';
  262. *cont=0;
  263. }

MOD: Etiqueta GeSHi.


Título: Re: [Error] ld returned 1 exit status
Publicado por: MCKSys Argentina en 14 Noviembre 2016, 14:59 pm
Hola!

Puede que sea porque en la linea 32 inicializas
Código
  1. char again [3]="s"
y la condición del bucle de la linea 44 es
Código
  1. while (again [0]=='s'){

Fíjate que los subíndices son distintos por lo que el blucle termina sin ejecutar nada.

Saludos!


Título: Re: [Error] ld returned 1 exit status
Publicado por: ivancea96 en 14 Noviembre 2016, 20:53 pm
Cuando envías a una función un array,pones el nombre del array, sin corchetes.
Código
  1. Seleccion_de_palabra(&plb[10], &num);
Ahí le estás enviendo de primer parámetro la dirección del undécimo elemento de "plb".
Si quieres enviar la dirección de plv, sería:
Código
  1. Seleccion_de_palabra(&plb, &num);

Y lo mismo con todas las ocurrencias de este problema.