C/Visual C - Comparar dos IPs

 
Vista:

Comparar dos IPs

Publicado por Cristian (2 intervenciones) el 01/11/2017 16:53:02
Hola,

Quiero comparar dos IPs, una que te coge el cliente y la otra de la base de datos.

El campo "ip" en la base de datos es varchar 24.

El código es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
new ip;
char ipselected;
 
GetPlayerIp(playerid, ip, sizeof(ip));
 
 
ipselected = mysql_format(servidor[mysqlControl], tmp, sizeof(tmp), "SELECT ip FROM ips WHERE userid='%d'", cuenta[playerid][cUnico]);
mysql_query(servidor[mysqlControl], tmp, true);
 
format(tmp, sizeof(tmp), "* IP: %s", ipselected);
Mensaje(playerid, COLOR_AMARILLO3, tmp);
 
 
 
if(strcmp(ipselected, ip) == 1)
{
	mysql_format(servidor[mysqlControl], tmp, sizeof(tmp), "INSERT INTO ips(ip, fecha, userid) VALUES('%s', '%s', '%d');", ip, ObtenerFecha(), cuenta[playerid][cUnico]);
	mysql_query(servidor[mysqlControl], tmp, true);
 
	format(tmp, sizeof(tmp), "* IP2: %s", ip);
	Mensaje(playerid, COLOR_BLANCO, tmp);
}

El problema es que en la " if " me da error: error 035: argument type mismatch (argument 1).

¿Como puedo solucionar el error al comparar las dos ips?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dionicio
Val: 91
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

re:Comparar dos IPs

Publicado por Dionicio (22 intervenciones) el 02/11/2017 14:00:33
Lo que pasa es que estas pasando un char en vez de una cadena de carácteres:

1
char ipselected; //Solo almacena un caracter

Si usas una cadena de caracteres como
1
char ipselected[15];//Mas o menos 15 caracteres serían suficientes para almacenar una ip

entonces no podrás hacer una asignacion directa como ipselected = unaIPcualquiera entre las opciones que tienes puedes usar la función strcpy(); de la biblioteca string.h o hacer una función propia para copiar dicha cadena.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

re:Comparar dos IPs

Publicado por Cristian (2 intervenciones) el 02/11/2017 14:59:17
Mirando por internet, también he probado así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
new ip[16], ipselected[16];
 
GetPlayerIp(playerid, ip, sizeof(ip));
 
ipselected = mysql_format(servidor[mysqlControl], tmp, sizeof(tmp), "SELECT ip FROM ips WHERE userid='%d'", cuenta[playerid][cUnico]);
mysql_query(servidor[mysqlControl], tmp, false);
format(tmp, sizeof(tmp), "* IP: %s", ipselected);
Mensaje(playerid, COLOR_AMARILLO3, tmp);
 
char *s1;
char *s2;
 
s1 = ip;
s2 = ipselected;
 
// if(strcmp(s1, s2) == 0) tambien he probado con este if y no funciona
 
if(strcmp(ipselected, ip, true)  == 1)
 
{
mysql_format(servidor[mysqlControl], tmp, sizeof(tmp), "INSERT INTO ips(ip, fecha, userid) VALUES('%s', '%s', '%d');", ip, ObtenerFecha(), cuenta[playerid][cUnico]);
mysql_query(servidor[mysqlControl], tmp, true);
 
format(tmp, sizeof(tmp), "* IP2: %s", ip);
Mensaje(playerid, COLOR_BLANCO, tmp);
}

Pero me sale que el if es incorrecto, lo probare como tu me has dicho a ver.. gracias

PS: he ido probando varios modelos que encontré por internet, pero nada.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar