Alguien sabe cual es el error? - C

Iniciado por Mozzard, 14 Noviembre 2018, 18:09 PM

0 Miembros y 1 Visitante están viendo este tema.

Mozzard

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??
#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");
}
Programalo... sin miedo...

FranFin

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

Beginner Web

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 (cpp) [Seleccionar]
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(){
char t[100],a[100];
printf("Introduce un texto:    ");
gets(t);
strcpy(a,t);
printf("Representacion de variables:\n%s\n%s\n\n",t,a);
if(strcmp(a,t)==0)
printf("las 2 variables son iguales\n");
else
printf("por alguna razon las 2 variables no son iguales\n");
system("pause");
}
7w7

AlbertoBSD

#3
Cita de: Beginner Web 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

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

gets(t);

por

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.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Beginner Web

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  ;-)
7w7