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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el ttwitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  hola a todos!! / Duda sobre variable tipo bool
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: hola a todos!! / Duda sobre variable tipo bool  (Leído 4,222 veces)
marcelitaaa

Desconectado Desconectado

Mensajes: 6



Ver Perfil
hola a todos!! / Duda sobre variable tipo bool
« en: 4 Julio 2011, 17:46 pm »

Hola a todos! Soy Marcela y me presento. Tengo algunas dudas con C y me gustaría saber si me pueden dar una mano. Estoy estudiando C en la facultad y me dieron ejercicios, ya hice como 50 de elllos pero este no me funciona. Estoy trabajando en una ibook g4 con xcode y compilo en la terminal mediante gcc.
Si alguien me puede ayudar le estaré muy agradecida  :rolleyes:

Código:
//Escribir una función que reciba dos cadenas de caracteres denominadas "s1" y
//"s2" respectivamente, y verifique la existencia de la cadena s2 como subcadena
//integrante de la s1, retornando un token del tipo enumerativo bool por el nombre
//de la función (ver función strstr() de la biblioteca <string.h>).
//Prototipo: bool my_strstr (char *big, char *sub) ;
#include <stdio.h>
#include <string.h>
#define max 100
   
bool my_strstr (char*, char*);

int main()
{
   char s1[max],s2[max];
   bool conf;
   printf ("ingrese la cadena principal: ");
   scanf ("%s",s1);
   printf ("ingrese la cadena a buscar: ");
   scanf ("%s",s2);
   conf = my_strstr (s1,s2);
   if (conf == true)
       printf ("la primer cadena contiene a la segunda");
   else
       printf ("la primer cadena no contiene a la segunda");
   return 0;
}


bool my_strstr (char *big, char *sub)
{
   bool baby;
   if (strstr(big, sub) != NULL)
   {
       baby = true;
   }
   else
   {
       baby = false;
   }
   return (baby);
}


En línea

Dark Invader

Desconectado Desconectado

Mensajes: 111


Lucha hasta el final para conseguir tu objetivo.


Ver Perfil
Re: hola a todos!! / Duda sobre variable tipo bool
« Respuesta #1 en: 4 Julio 2011, 18:06 pm »

Buenas,

Sería algo así:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define max 100
  4.  
  5. bool my_strstr (char*, char*);
  6.  
  7. int main()
  8. {
  9.   char s1[max],s2[max];
  10.   bool conf;
  11.   printf ("ingrese la cadena principal: ");
  12.   gets(s1);
  13.   printf ("ingrese la cadena a buscar: ");
  14.   gets(s2);
  15.   conf = my_strstr (s1,s2);
  16.   if (conf == true)
  17.       printf ("la primer cadena contiene a la segunda");
  18.   else
  19.       printf ("la primer cadena no contiene a la segunda");
  20.       getchar();
  21.   return 0;
  22. }
  23.  
  24.  
  25. bool my_strstr (char *big, char *sub)
  26. {
  27.   bool baby;
  28.   if (strstr(big, sub) != NULL)
  29.   {
  30.       baby = true;
  31.   }
  32.   else
  33.   {
  34.       baby = false;
  35.   }
  36.   return baby;
  37. }

Este ha sido un poco modificado,pero me funciona perfecto.Por cierto,si tienes que desarrollar una funcion como la de strtr¿te permiten utilizar el strstr en la funcion?¿No deberias crear una funcion sin recurrir a la funcion strstrt?

Porque entonces no le veo mucha utilidad al ejercicio  :huh:

Salu2


En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: hola a todos!! / Duda sobre variable tipo bool
« Respuesta #2 en: 4 Julio 2011, 18:12 pm »

Fijate que si andás compilando con un compilador de C, el tipo de dato bool no existe (se usaba int), podés cambiarlo a eso o hacer algún parchesito pokeando con  typedef/enum/preprecesador para "implementarlo", más visible como :

Código
  1. #define true 1
  2. #define false 0
  3.  
  4. typedef int bool;
  5.  

o sino, más acotado y correcto :

Código
  1. typedef enum{ false,true } bool;

Saludos.
« Última modificación: 4 Julio 2011, 18:36 pm por vertex@Symphony » En línea

marcelitaaa

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Re: hola a todos!! / Duda sobre variable tipo bool
« Respuesta #3 en: 4 Julio 2011, 18:25 pm »

Gracias por las respuestas! Son muy amables! La verdad q es raro pero me pedían explicitamente usar la funcion strstr así q la usé. Muchas gracias DarkInvader.

Por otgro lado Vertex, me parece q tenés razón porque acabo de hacer un programa q define una variable tipo "bool" y  no compila  :-\. Lindo parchecito me pasaste, me encanta, gracias!

Ahora pruebo todo y les aviso.
En línea

marcelitaaa

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Re: hola a todos!! / Duda sobre variable tipo bool
« Respuesta #4 en: 4 Julio 2011, 18:40 pm »

Mil gracias! Ha funcionado! El parche que me has pasado Vertex es increible, pude cumplir con las consignas todas, me da mucha felicidad.

Te hago una pregunta Dark Invader, cuando utilizo "gets" me sale una leyenda q dice "this program uses gets(), which is unsafe."

Por qué me es inseguro usar gets? Hay alguna forma de usar otro tipo de funcion para introducir una cadena de texto la cual no sea insegura?

gracias!
En línea

Dark Invader

Desconectado Desconectado

Mensajes: 111


Lucha hasta el final para conseguir tu objetivo.


Ver Perfil
Re: hola a todos!! / Duda sobre variable tipo bool
« Respuesta #5 en: 4 Julio 2011, 18:51 pm »

Gets es seguro,por lo menos siempre que lo he usado pero hay uno más seguro todavía que es el fgets, te dejo información:

http://c.conclase.net/librerias/?ansifun=fgets

En cuanto al código que puse me funciona bien,pero claro no había caído en tu compilador.

Salu2
En línea

marcelitaaa

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Re: hola a todos!! / Duda sobre variable tipo bool
« Respuesta #6 en: 4 Julio 2011, 19:19 pm »

Sos muy amable Dark Invader  ;D, me encantó, ya me estoy leyendo toda esa página, recien he visto que tiene un curso de c que esta genial ;-)

entonces la definicion de variables bool funciona en algunos compiladores y en otros no? no comprendí esa parte....
En línea

Dark Invader

Desconectado Desconectado

Mensajes: 111


Lucha hasta el final para conseguir tu objetivo.


Ver Perfil
Re: hola a todos!! / Duda sobre variable tipo bool
« Respuesta #7 en: 4 Julio 2011, 19:22 pm »

Pues eso parece,las variables booleanas están definidas en el estandarte C++,por lo que un compilador que sea solo de C no la leerá,por eso hay que hacer una conversión de datos como te dijo el compañero vertex@Symphony.

Una última cosa,si quieres que tu código se lea bien,pon esto antes del return 0:

Código:
getchar();

Esta linea espera a que se pulse intro para finalizar,y podrás leer el programa entero.

Salu2
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: hola a todos!! / Duda sobre variable tipo bool
« Respuesta #8 en: 4 Julio 2011, 19:41 pm »

Sos muy amable Dark Invader  ;D, me encantó, ya me estoy leyendo toda esa página, recien he visto que tiene un curso de c que esta genial ;-)

entonces la definicion de variables bool funciona en algunos compiladores y en otros no? no comprendí esa parte....

Puedes compilar con el estándar c99 y usar stdbool.h:


Código
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3.  
  4. int main(void)
  5. {
  6.    _Bool x = true;
  7.    printf("%d\n", x);
  8.    x = false;
  9.    printf("%d\n", x);
  10.    return 0;
  11. }
  12.  

Código:
gcc code.c -o code -std=c99
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: hola a todos!! / Duda sobre variable tipo bool
« Respuesta #9 en: 4 Julio 2011, 20:30 pm »

Guarda con c99 que no se si todos los compiladores lo tienen debidamente implementado (por lo menos en *nix), gcc se que no ... es preferible evitarlo (stdbool está igualmente, pero dejo el warning). Además, solo se necesita el include y no cambiar el "bool"

Saludos.

PS: Curiosamente en FreeBSD ese header lo hicieron como la primer version que puse.
« Última modificación: 4 Julio 2011, 23:03 pm por vertex@Symphony » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines