Anuncios Google

[Duda C] Porque el compilador no me deja hacer un if comparando con una cadena de caracteres?(Solucionado)

Bueno, pues os dejo el codigo y el error haber si sabeis que es:

		if (Jugador1Dir=="Derecha") {
 
			Jugador1X++;
 
		}
 
		else if(Jugador1Dir=="Izquierda"){
 
			Jugador1X--;
 
		}
 
		else if(Jugador1Dir=="Arriba"){
 
			Jugador1Y--;
 
		}
 
		else if(Jugador1Dir=="Abajo"){
 
			Jugador1Y++;
 
		}

Error de compilador

main.c:50: aviso: la comparación con una literal de cadena resulta en una conducta no especificada
main.c:53: aviso: la comparación con una literal de cadena resulta en una conducta no especificada
main.c:56: aviso: la comparación con una literal de cadena resulta en una conducta no especificada
main.c:59: aviso: la comparación con una literal de cadena resulta en una conducta no especificada
main.c:62: aviso: la comparación con una literal de cadena resulta en una conducta no especificada
main.c:65: aviso: la comparación con una literal de cadena resulta en una conducta no especificada
main.c:68: aviso: la comparación con una literal de cadena resulta en una conducta no especificada
main.c:71: aviso: la comparación con una literal de cadena resulta en una conducta no especificada


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 moikop

En C

No puedes comparar un *char[] con un string normal..

Lo que dice IndexAlpha9 es correcto :)

Imagen de User170294

El problema es que estás

El problema es que estás comparando cadenas como si estuvieras en Lua.

Imagen de Andresmargar

Debes poner//

para hacer eso que quieres hacer se hace con una funcion llamada strcmp()

Para usarlo debes incluir la LIB <string.h>

#include <string.h>
#include <stdio.h>
#include <pspdebug.h>
char seleccion[32];
sprintf(seleccion, "izquierda");
while(1){
      if(strcmp(seleccion, "izquierda") == 0){ //izquierda
                printf("Izquierda escogido\n");
      }
       if(strcmp(seleccion, "derecha") == 0){ //derecha
                printf("Derecha escogido\n");
      }
      if(strcmp(seleccion, "arriba") == 0){ //arriba
                printf("Arriba escogido\n");
      }
       if(strcmp(seleccion, "abajo") == 0){ //abajo
                printf("Abajo escogido\n");
      }
}
 

 

Espero que te sirva ;)

 

AÑADO: La funcion tiene como parametros las 2 cadenas de texto que quieras comparar; devuelve 0 si son iguales, o devuelve el numero de caracteres que no son iguales


~Actualmente estudiando Ingeniería de las Tecnologías de la Telecomunicación en la Escuela de Ingenieros~

No devuelve el numero de caracteres que no son iguales

Sacado del manual directamente: 

RETURN VALUES

     The strcmp() and strncmp() return an integer greater than, equal to, or less than 0, according as the string s1

     is greater than, equal to, or less than the string s2.  The comparison is done using unsigned characters, so

     that `\200' is greater than `\0'.

devuelve positivo si el primer string es mayor que el segundo, 0 si son iguales y -1 si es menor. Solo esa aclaracion.
Imagen de Dioni0396

Bueno,

pues era eso, pero no necesitaba la libreria string.

Imagen de Andresmargar

Que raro...

A lo mejor en otras librerias que incluyas ya incluye la <string.h>, pero si te funciona, me alegro de haberte ayudado :)

Imagen de Dioni0396

las oslib

que son asi xD

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.