Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Dudas de un trabajo

Estas en el tema de Dudas de un trabajo en el foro de C/C++ en Foros del Web. Muy buenas a todos los miembros de la comunidad. Estoy haciendo un proyecto de C y me preguntaba si me podríais ayudar con algunas dudas ...
  #1 (permalink)  
Antiguo 27/08/2014, 15:30
 
Fecha de Ingreso: agosto-2014
Mensajes: 4
Antigüedad: 9 años, 8 meses
Puntos: 0
Pregunta Dudas de un trabajo

Muy buenas a todos los miembros de la comunidad. Estoy haciendo un proyecto de C y me preguntaba si me podríais ayudar con algunas dudas que me han surgido. Aquí va la primera.

Teniendo este "Header File" llamado "app.h":

Código C:
Ver original
  1. #ifndef APP_H_
  2. #define APP_H_
  3.  
  4. #include <stdio.h>
  5. #include <string.h>
  6.  
  7. #define MAX_CAD 256
  8.  
  9. typedef char Cadena[MAX_CAD];
  10. typedef enum {ANDROID, IOS, WINDOWS} TipoSO;
  11.  
  12. TipoSO cadenaAtipoSO(const Cadena soCad);
  13.  
  14. #endif /* APP_H_ */


Quiero probar la siguiente función en su correspondiente "Source File", "app.c":

Código C:
Ver original
  1. #include "app.h"
  2.  
  3. TipoSO cadenaAtipoSO(const Cadena soCad){
  4.    TipoSO res;
  5.    if(strcmp(soCad, "ANDROID") == 0){
  6.       res = ANDROID;
  7.    }
  8.    else if(strcmp(soCad, "IOS") == 0){
  9.       res = IOS;
  10.    }
  11.    else if(strcmp(soCad, "WINDOWS") == 0){
  12.       res = WINDOWS;
  13.    }else{
  14.       printf("\nSistema operativo erróneo***");
  15.       exit(-1);
  16.    }
  17.    return res;
  18. }


Y para probarlo uso otro "Source File" distinto al que llamé "test.c":

Código C:
Ver original
  1. #include "app.h"
  2.  
  3. void testcadenaAtipoSO();
  4.  
  5. int main(void){
  6.    testcadenaAtipoSO();
  7.    return 0;
  8. }
  9.  
  10. void testcadenaAtipoSO(){
  11.    Cadena str = "IOS";
  12.    TipoSO n = cadenaAtipoSO(str);
  13.    printf(n);
  14.    printf("COMPLETADO");
  15. }

El caso es que al hacerlo correr me sale una ventana de error que pone "Launch failed. Binary not found."

Lo que quiero hacer con esta función es transforma una cadena en un literal de tipo TipoSO (por ejemplo, la cadena “ANDROID” es transformada en el valor ANDROID de TipoSO). El tipo TipoSO ya lo creé en la cabecera "app.h".

¿Cómo podría arreglarlo?

Gracias de antemano.
  #2 (permalink)  
Antiguo 27/08/2014, 22:41
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: Dudas de un trabajo

Hola amigo.
Bueno pues lo único que te hace falta son las librerías y en la formas como usas un printf por lo que tu código quedaría así.
app.h
Código C:
Ver original
  1. #ifndef APP_H_
  2. #define APP_H_
  3.  
  4. #include <stdio.h>
  5. #include <string.h>
  6.  
  7. #define MAX_CAD 256
  8.  
  9. typedef char Cadena[MAX_CAD];
  10. typedef enum {ANDROID, IOS, WINDOWS} TipoSO;
  11.  
  12. TipoSO cadenaAtipoSO(const Cadena soCad);
  13.  
  14. #endif /* APP_H_ */

app.c
Código C:
Ver original
  1. #include "app.h"
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. TipoSO cadenaAtipoSO(const Cadena soCad){
  6.    TipoSO res;
  7.    if(strcmp(soCad, "ANDROID") == 0){
  8.       res = ANDROID;
  9.    }
  10.    else if(strcmp(soCad, "IOS") == 0){
  11.       res = IOS;
  12.    }
  13.    else if(strcmp(soCad, "WINDOWS") == 0){
  14.       res = WINDOWS;
  15.    }else{
  16.       printf("\nSistema operativo erróneo***");
  17.       exit(-1);
  18.    }
  19.    return res;
  20. }

test.c
Código C:
Ver original
  1. #include "app.h"
  2. #include <stdio.h>
  3.  
  4. void testcadenaAtipoSO();
  5.  
  6. int main(void){
  7.    testcadenaAtipoSO();
  8.    return 0;
  9. }
  10.  
  11. void testcadenaAtipoSO(){
  12.    Cadena str = "WINDOWS";
  13.    TipoSO n;
  14.     n =cadenaAtipoSO(str);
  15.    printf("%d\n",n);
  16.    printf("COMPLETADO\n");
  17. }

Bueno espero te sea de ayuda.
Saludos.
Drewermerc.

Etiquetas: dudas, ejemplo, int, string, trabajo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:34.