En el primer condicional 'if' usas una comparacion directa entre una variable y una cadena y debes usar un función que compare letra por letra como strcmp.
Aqui te dejo como quedaría el código.
#include <stdio.h>#include <string.h> /* Para la funcion strcmp, en esta libreria encontraras muchas funciones para manejar cadenas*/int main(){/*... Aqui va tu codigo y las variables*/if(strcmp(cadena,"Juan")==0){/* Usa el operador de comparación '==' y no el de igualación*/
persona=1;}if(persona==1){printf("...\n");/* En los ... pon lo que quieras y se te ha olvidado el ';'*/}}
Programo en C, C++, C# y ASM ( Sintaxis INTEL y AT&T )
Si estás comparando 2 cadenas, usa lo que te ha puesto Ateno. Si por el contrario "elección" es un string de C++ lo que tienes que sustituir es simplemente el = por ==.
En resumen. Si has declarado elección como
char eleccion [TAM];// ochar*eleccion;
Usa el código de ateno. Si por el contrario lo has declarado como
#include <string>
using namespace std;string eleccion;
#include <stdio.h>#include <string.h>int main(){//Maquina-------------------------------------------------------------------char*eleccion;int persona;//Maquinas (Acaba)--------------------------------------------------------char*nombre;int edad;float estatura;printf("¿Con quien quieres hablar? ¿Con Veronica o con Juan?");
scanf("%s",&eleccion );//Respuestas (Juan)if(strcmp(eleccion,"Juan")==0){/* Usa el operador de comparación '==' y no el de igualación*/
persona=1;}if(persona ==1){printf("Hola soy juan, te voy a hacer unas preguntas para conocerte mejor.");}return0;
getchar();}
Lo que pasa es que cuando pongo: juan me pone prueba.exe dejo de funcionar.
Tal como lo has puesto, elección y nombre son punteros que no apuntan a nada (a basura) y estás intentando utilizar el espacio al que apuntan, cuando ese espacio no se te ha asignado. Tienes que inicializarlos con un malloc, aunque para lo que tu quieres hacer te vale con vectores estáticos. El código arreglado es:
#include <stdio.h>#include <string.h>int main(){//Maquina-------------------------------------------------------------------char eleccion [100];int persona;//Maquinas (Acaba)--------------------------------------------------------char nombre [100];int edad;float estatura;printf("¿Con quien quieres hablar? ¿Con Veronica o con Juan?");
scanf("%s", eleccion );//Respuestas (Juan)if(strcmp(eleccion,"Juan")==0){/* Usa el operador de comparación '==' y no el de igualación*/
persona=1;}if(persona ==1){printf("Hola soy juan, te voy a hacer unas preguntas para conocerte mejor.");}return0;
getchar();}
Fíjate que he cambiado la declaración de elección y persona. Además, en scanf estabas pasando un puntero a puntero a char (un puntero doble). Es decir, estabas pasando la dirección donde está la dirección de la cadena, en lugar de la dirección de la cadena (le he quitado el &).
No lo he probado, pero salvo que se me pase algo o haya cometido algún error debería funcionar.
Saludos!
EDIT: Me acabo de dar cuenta de que tampoco has inicializado la variable persona, por lo que podría no funcionar correctamente. Aunque no esprobable que se tenga valor 1 al inicio, para ser correctos tendrías que inicializarla a 0.
Por último, ten en cuenta que si escribes juan no te va a funcionar. Solo funcionará si escribes Juan, con mayúsculas!
"=" -> Asignación de valor a variable. "==" -> Igualación booleana. Retorna true si ambas variables son iguales.
Entonces: Dentro del if, va el "==". Y fuera, el "=" :P
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
Será syntax, en español sintaxis, vamo que es un error sintáctico. Un error sintáctico significa que te falta un paréntesis de cierre, una llave, te sobran espacios, te falta un punto y coma, hay un else sin un if...
En tu caso te falta el punto y coma al final del printf, como te ha explicado ateno_3 en su código.
Strcmp
En el primer condicional 'if' usas una comparacion directa entre una variable y una cadena y debes usar un función que compare letra por letra como strcmp.
Aqui te dejo como quedaría el código.
Programo en C, C++, C# y ASM ( Sintaxis INTEL y AT&T )
Proyectos:
- UnlockMii 5.0 ----> UnlockMii 5.1: ( EN CONSTRUCCION -> 2% )
- MiiOS ( EN CONSTRUCCION -> 0,01% )
El mejor antivirus ==> Avast!
Completo.
Permíteme que complete, ateno :)
Si estás comparando 2 cadenas, usa lo que te ha puesto Ateno. Si por el contrario "elección" es un string de C++ lo que tienes que sustituir es simplemente el = por ==.
En resumen. Si has declarado elección como
Usa el código de ateno. Si por el contrario lo has declarado como
Cambia el '='por un '==' en el if.
Saludos.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Gracias a todos pero miren
Gracias a todos pero miren:
Lo que pasa es que cuando pongo: juan me pone prueba.exe dejo de funcionar.
Mi blog: adriel0000.wordpress.com
un saludo.
Claro
Tal como lo has puesto, elección y nombre son punteros que no apuntan a nada (a basura) y estás intentando utilizar el espacio al que apuntan, cuando ese espacio no se te ha asignado. Tienes que inicializarlos con un malloc, aunque para lo que tu quieres hacer te vale con vectores estáticos. El código arreglado es:
Fíjate que he cambiado la declaración de elección y persona. Además, en scanf estabas pasando un puntero a puntero a char (un puntero doble). Es decir, estabas pasando la dirección donde está la dirección de la cadena, en lugar de la dirección de la cadena (le he quitado el &).
No lo he probado, pero salvo que se me pase algo o haya cometido algún error debería funcionar.
Saludos!
EDIT: Me acabo de dar cuenta de que tampoco has inicializado la variable persona, por lo que podría no funcionar correctamente. Aunque no esprobable que se tenga valor 1 al inicio, para ser correctos tendrías que inicializarla a 0.
Por último, ten en cuenta que si escribes juan no te va a funcionar. Solo funcionará si escribes Juan, con mayúsculas!
Creo que eso es todo (al menos por ahora).
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Te estas confundiendo con los
Te estas confundiendo con los "=".
"=" -> Asignación de valor a variable.
"==" -> Igualación booleana. Retorna true si ambas variables son iguales.
Entonces: Dentro del if, va el "==". Y fuera, el "=" :P
Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.
No preguntes por MP, mejor pregunta aquí.
Gracias
Gracias aora pongo los resultados.
Edit---
if(persona == 1) {
printf("Hola soy juan, te voy a hacer unas preguntas para conocerte mejor.")
}
Dice que el simbolo de cierre (La ultima linea) esa mal y dice algo de systax
Syntax error before "}" token
Mi blog: adriel0000.wordpress.com
un saludo.
Punto y coma
Será syntax, en español sintaxis, vamo que es un error sintáctico. Un error sintáctico significa que te falta un paréntesis de cierre, una llave, te sobran espacios, te falta un punto y coma, hay un else sin un if...
En tu caso te falta el punto y coma al final del printf, como te ha explicado ateno_3 en su código.
Saludos!
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.