Duda, por que no me funciona?

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
CelDavid
Mensajes: 1
Registrado: 08/05/2019 3:23 pm

Duda, por que no me funciona?

#1 Mensaje por CelDavid » 08/05/2019 3:32 pm

Hola queria pedirles ayuda, estaba probando la funcion strcmp(), estoy haciendo pruebas en este codigo simple, hay una sentencia comentada que cuando la descomento, no me funciona, por que? no entiendo

Código: Seleccionar todo

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>


struct pruebachar{
	char* cadenatres;
	int tel;
};

int main(){
	char *cadenauno="hola";
	char *cadenados;
	
	struct pruebachar var;
	struct pruebachar *pp;

	pp=&var;
	var.cadenatres="hola";

	printf("Ingrese esta palabra: hola\n");
	fflush(stdin);
	gets(cadenados);

	
	//printf("pp->cadenatres %s\n", pp->cadenatres);

	if(strcmp(cadenauno,cadenados)==0){
		printf("Son iguales\n");
	}else{
		printf("Son distintos\n");
	}

	if(strcmp(cadenauno,var.cadenatres)==0){
		printf("Son iguales\n");
	}else{
		printf("Son distintos\n");
	}


	if(strcmp(cadenauno,pp->cadenatres)==0){
		printf("Son iguales\n");
	}else{
		printf("Son distintos\n");
	}

	return 0;
}
Última edición por mollok el 08/05/2019 11:57 pm, editado 1 vez en total.
Razón: Los códigos deben ir entre etiquetas 'code', botón </>

mollok
Mensajes: 437
Registrado: 30/01/2018 9:47 am
Ubicación: Mallorca, España

Re: Duda, por que no me funciona?

#2 Mensaje por mollok » 09/05/2019 10:19 am

Una cadena puntero sólo se le puede dar un valor literal a la hora de crearla:

Código: Seleccionar todo

// legal
char *cadena = "cadena";

// ilegal
char *otra_cadena;
otra_cadena = "otra_cadena";
Si quieres recibir datos a una variables ésta debe tener unas dimensiones. Por tanto debe ser un array o se debe haber dimensionado un puntero con malloc.
Por tanto tu código se debe reescribir así:

Código: Seleccionar todo

#include <stdio.h>
#include <string.h>


struct pruebachar{
	char cadenatres[25];
	int tel;
};

int main(){
	char *cadenauno="hola";
	char cadenados[25];

	struct pruebachar var;
	struct pruebachar *pp;

	pp=&var;
	strcpy(var.cadenatres, "hola");

	printf("Ingrese esta palabra: hola\n> ");

	gets(cadenados);


	printf("pp->cadenatres %s\n", pp->cadenatres);

	if(strcmp(cadenauno, cadenados)==0){
		printf("Son iguales\n");
	}else{
		printf("Son distintos\n");
	}

	if(strcmp(cadenauno, var.cadenatres)==0){
		printf("Son iguales\n");
	}else{
		printf("Son distintos\n");
	}


	if(strcmp(cadenauno, pp->cadenatres)==0){
		printf("Son iguales\n");
	}else{
		printf("Son distintos\n");
	}

	return 0;
}
while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados