Anuncios Google

Error en C

Hola, hace un tiempo que no toco C y estas lineas me dan error y no consigo ver porque.

if(eleccion = "juan"){

persona==1;  

    }

    if(persona = 1){

    printf("Hola soy juan, te voy a hacer unas preguntas para conocerte mejor.")

    }

 


Mi blog: adriel0000.wordpress.com

 

un saludo.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ateno_3

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.

 

#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 )

Proyectos:

- UnlockMii 5.0 ----> UnlockMii 5.1: ( EN CONSTRUCCION -> 2% )

- MiiOS ( EN CONSTRUCCION -> 0,01% )

El mejor antivirus ==> Avast!

Imagen de joserc87

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

char eleccion [TAM];
// o
char *eleccion;

Usa el código de ateno. Si por el contrario lo has declarado como

#include <string>
using namespace std;
 
string eleccion;
 

Cambia el '='por un '==' en el if.

Saludos.


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de adriel0000

Gracias a todos pero miren

Gracias a todos pero miren:

#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.");
    }
 
   return 0;
   getchar();
}

Lo que pasa es que cuando pongo: juan me pone prueba.exe dejo de funcionar.


Mi blog: adriel0000.wordpress.com

 

un saludo.

Imagen de joserc87

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:

#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.");
    }
 
   return 0;
   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!

Creo que eso es todo (al menos por ahora).


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de moikop

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í.

Imagen de adriel0000

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.

Imagen de joserc87

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!


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.