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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Alguien sabe cual es el error? - C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Alguien sabe cual es el error? - C  (Leído 607 veces)
Mozzard

Desconectado Desconectado

Mensajes: 27


cout << "Text here" << endl;


Ver Perfil
Alguien sabe cual es el error? - C
« en: 14 Noviembre 2018, 18:09 pm »

Bueno este codigo se supone que debe comparar si las 2 variables son iguales o no, hata aqui todo muy correcto y muy facil. Pues por alguna razón al hacer un if comparando si son iguales o no no funciona. Alguien sabe por que??
Código:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(){
printf("Introduce un texto:    ");
char t[100],a[100];
gets(t);
strcpy(a,t);
printf("Representacion de variables:\n%s\n%s\n\n",t,a);
if(a==t){
printf("las 2 variables son iguales\n");
}else{
printf("por alguna razon las 2 variables no son iguales\n");
}
system("pause");
}


En línea

Código:
Programalo... sin miedo...
FranFin

Desconectado Desconectado

Mensajes: 50


Ver Perfil
Re: Alguien sabe cual es el error? - C
« Respuesta #1 en: 14 Noviembre 2018, 18:18 pm »

Hasta donde yo se, no puedes comparar arrays asi, debes mirar todos los elementos de los arrays y comparar que los elementos coinciden.


En línea

Beginner Web


Desconectado Desconectado

Mensajes: 587


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Alguien sabe cual es el error? - C
« Respuesta #2 en: 14 Noviembre 2018, 18:42 pm »

Dios, pero si haces ese strcpy de la cadena t(origen)  a la cadena a(destino), siempre te va mostrar que las dos son iguales xd
P/D: Tengo hambre
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int main(){
  6. char t[100],a[100];
  7. printf("Introduce un texto:    ");
  8. gets(t);
  9. strcpy(a,t);
  10. printf("Representacion de variables:\n%s\n%s\n\n",t,a);
  11. if(strcmp(a,t)==0)
  12. printf("las 2 variables son iguales\n");
  13. else
  14. printf("por alguna razon las 2 variables no son iguales\n");
  15. system("pause");
  16. }
En línea

{_id: "5ef16999f6ce240abc225ss3",
nombre: "Ana Keldysh",
nacionalidad: "Argentina",
edad: "17",
profesion: "Desarrollador Web Full Stack, pero la verdad hago de todo.",
"__v": 0
}
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.595


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Alguien sabe cual es el error? - C
« Respuesta #3 en: 14 Noviembre 2018, 20:56 pm »

Dios, pero si haces ese strcpy de la cadena t(origen)  a la cadena a(destino), siempre te va mostrar que las dos son iguales xd
P/D: Tengo hambre

Jajajajajaja

Sin mencionar el bonito BufferOverflow que esta causando si le mete mas de 100 Caracteres, podríamos ejecutar cualquier código en ese input.

Recomendaria cambiar el gets por fgets

Código:
gets(t);

por

Código:
fgets(t,100,stdin);


Adicionalmente si utiliza el gets si puede que las variables sean diferentes, si le mete mas de 100 caracteres pero no excede los 200 (Necesarios para el bufferoverflow)

Adjunto imagen  ;-) ;-) ;-) ;-) ;-) :silbar: :silbar: aun con el strcmp y sumado al gets el Else puede llegar a cumplirse si excedes los 100 Caracteres para el input



Motivo por el cual RECOMIENDO ROTUNDAMENTE el uso de fgets y tambien de strncmp

Saludos

P/D. Yo también tengo hambre.
« Última modificación: 14 Noviembre 2018, 22:03 pm por AlbertoBSD » En línea

Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW
Beginner Web


Desconectado Desconectado

Mensajes: 587


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Alguien sabe cual es el error? - C
« Respuesta #4 en: 15 Noviembre 2018, 01:59 am »

Todo eso es cierto, pero a modo aprendizaje esta bien por ahora, despues haria todas las validaciones de datos correspondientes supongo; y otra cosa, sigo con hambre  ;-)
En línea

{_id: "5ef16999f6ce240abc225ss3",
nombre: "Ana Keldysh",
nacionalidad: "Argentina",
edad: "17",
profesion: "Desarrollador Web Full Stack, pero la verdad hago de todo.",
"__v": 0
}
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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