[Tutorial] Uso de Format ,Strcmp ,Strmid y strcat
#1

Introduccion

El uso de estas 4 funciones son importante en nuestro aprendizaje ya que
son utilizadas en muchas cosas tal que el dominio de estas funciones
es Obligatorio.


Desarrollo

1°- Concepto y Explicacion de Format o Formato


Format: Le da formato a una cadena para incluir variables y otras cadenas en su interior.

format(output[], len, const format[], {Float,_}:...);

output:
la cadena para generar el resultado. (mejor conocido como Array)

len:
La longitud mбxima de salida. (mejor conocido como el tamaсo del Array)

format:
La cadena de formato.

Float:
Nъmero indefinido de argumentos de cualquier etiqueta.

Operador Significado

%b Inserta un numero Binario.
%c Inserta un solo carбcter.
%d Inserta un Numero entero (conjunto).
%f Inserta un Numero Floatante (float).
%i Inserta un entero.
%s Inserta una Cadena(string).
%x Inserta un Numero hexadecimal.
%% Inserta el literal '%'

Ejemplo De Uso:
pawn Код:
public OnPlayerSpawn(playerid)
{
    new Nombre[MAX_PLAYER_NAME]; // la variable que guardara el nombre del Jugador.
    new Str[128];   // la cadena que nos generara el resultado.
    GetPlayerName(playerid, Nombre, sizeof(Nombre));// la funcion que nos dira el nombre del jugador
    format(Str, sizeof(Str), "Has Spawneado %s[%d]", Nombre, playerid); // el format  que le dara un nuevo formato al texto obteniendo el nombre y el id del usuario.
    SendClientMessage(playerid, -1, Str);// el Mensaje donde se mostrara el nuevo formato de Str.
    return 1;
}


2°- Concepto y Explicacion de strcmp

Strcmp: Compara dos cadenas para ver si son iguales.

Nota Importante:
- Strcmp consiste en tomar cada uno de los caracteres de una cadena,
y restar su cуdigo ASCII con el cуdigo ASCII del carбcter en la otra serie.

-Asн que digamos que quieres comparar la cadena "hola" con la cadena "hola" (que es lo mismo).

Esto es lo que strcmp harб:
- Toma el primer carбcter ('h') y lo resta con el carбcter de la segunda cadena ('h').
- Si los caracteres son los mismos, el resultado de la sustracciуn serб 0 (null).
- Si las 2 cadenas no son iguales el uno al otro, strcmp devuelve el resultado de las restas.

strcmp(const string1[], const string2[], bool:ignorecase, length);

string1:
La primera cadena a comparar.

string2:
La segunda cadena a comparar.

ignorecase:
Cuando se establece en true, el caso no importa. - HolA es el mismo que Hola.
Cuando se establece en false, el caso importa. - HolA no es lo mismo que Hola.

length es (opcional):
Cuando esta longitud estб definida, los primeros x caracteres serбn comparados
- haciendo "Hola" y "Hola No" con una longitud de 4 a decir que es la misma cadena.

Ejemplo De Uso:
pawn Код:
/// en este caso lo usaremos de la siguiente manera
/// si un jugador se conecta con el nombre de Cesar_******
/// llama a OnPlayerConnect y strcmp verifica si es igual si es asi lo banea

public OnPlayerConnect(playerid)
{
    new Nombre[MAX_PLAYER_NAME];
    new Str[128];
    GetPlayerName(playerid, Nombre, sizeof(Nombre));
    if( strcmp("Cesar_******", Nombre, true ) == 0 )
    {
    format(Str, sizeof(Str), "%s[%d] Ha sido expulsado del servidor razon: Nombre Prohibido", Nombre, playerid);
    SendClientMessageToAll(-1, Str);
    Ban(playerid);
    return 1;
    }
    return 1;
}
Resultado:



3°- Concepto y Explicacion de Strmid

Strmid: Extrae un rango de caracteres de una cadena.


strmid( dest[], const source[], start, end, maxlength=sizeof dest);

dest:
La cadena para almacenar los caracteres extraнdos.

source:
La cadena de la que se pueden extraer caracteres.

start:
La posiciуn del primer carбcter.

end:
La posiciуn del ultimo carбcter.

maxlength:
La longitud del destino. (Serб el tamaсo de dest por defecto)

Ejemplo De Uso:
pawn Код:
/// en este caso lo usaremos de la siguiente manera
/// si un jugador se conecta con parte del nombre "Cesar"
/// llama a OnPlayerConnect y strcmp verifica si es igual si es asi lo banea.

public OnPlayerConnect(playerid)
{
    new Nombre[MAX_PLAYER_NAME];
    new Str[128];
    GetPlayerName(playerid, Nombre, sizeof(Nombre));
    if( strmid( Nombre, "Cesar", 0, 24, 24))
    {
    format(Str, sizeof(Str), "%s[%d] Ha sido expulsado del servidor razon: Parte del Nombre Prohibido", Nombre, playerid);
    SendClientMessageToAll(-1, Str);
    Ban(playerid);
    }
    return 1;
}
Resultado:



4°- Concepto y Explicacion de strcat

strcat: Esta funciуn concatena (une) dos cadenas en la referencia de destino.

strcat(dest[],const source[],maxlength=sizeof string);

dest:
La cadena para almacenar las dos cadenas concatenadas pulg

source:
La cadena de origen.

maxlength:
La longitud mбxima del destino.

Ejemplo De Uso:
pawn Код:
public OnPlayerConnect(playerid)
{
    new strons[400];
    strcat(strons,"Hola Forums Samp Este es mi tutorial.\n");
    strcat(strons,"Hola Forums Samp Este es mi tutorial.\n");
    strcat(strons,"Hola Forums Samp Este es mi tutorial.");
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Tutorial", strons, "Aceptar", "");
    return 1;
}
Resultado:





5°- Concepto y Explicacion de Strdel

Strdel: Eliminar parte de una cadena.

Strdel(string[], start, end);

string: La parte de la cadena a borrar.

start: La posiciуn del Primer carбcter que desea eliminar.

end: La posiciуn del ъltimo carбcter que desea eliminar.

pawn Код:
CMD:test(playerid,params[])
{
new string[26] = "Hola Amigo De Forums Samp";// La Cadena con texto agregado.
strdel(string, 4, sizeof string);            // eliminare desde string 4 el ultimo string.
SendClientMessage(playerid, -1, string);     // Como resultado solo se mostrara "Hola".
return 1;
}

6°- Concepto y Explicacion de Strfind

Strfind: Bъsqueda de una subcadena en una cadena.

Comentario Parka:
A decir verdad no me habнa topado con esta funciуn
pero ahora que la leo y entiendo me parece muy ъtil
e Importante para muchas de mis ideas.


Strfind(const string[],const sub[],bool:ignorecase=false,pos=0);

string:
La cadena que desea buscar (El Pajar).

sub:
La cadena que desea buscar (La Aguja).

ignorecase (Opcional): Cuando se establece en true, el caso no importa - Hola es el mismo que HoLa. Cuando es false, no es lo mismo.

Position (Opcional): El desplazamiento para iniciar la bъsqueda.

pawn Код:
/*
En el pajar por asн decirlo buscaremos las Letras.
/text A
/text B
/text C
y con seguridad y testeado aparecerб el mensaje.
*/

CMD:text(playerid,params[])
{
    if(sscanf( params, "s[128]", params[0])) return 1;/// usare sscanf y zcmd para hacer funciуn de bъsqueda.

    if(strfind("A B C", params[0], true) != -1)/// -1 = "Porque" -1 = seria como 'no encontrado'
    {
    SendClientMessage(playerid, -1, "Se dio la funciуn strfind satisfactoriamente..!");/// si el text a buscar es valido nos dira esto.
    }
    else
    {
    SendClientMessage(playerid, -1, "No se dio la funciуn strfind..!");/// si el text a buscar es invalido nos dirб esto.
    }
    return 1;
}
Bueno ese fue todo mi tutorial aquel que no entienda o dude puede preguntar.
Reply
#2

Jajaja Gracias
Reply
#3

en strcat el ultimo \n esta de mas .
Reply
#4

Quote:
Originally Posted by bytytus
Посмотреть сообщение
en strcat el ultimo \n esta de mas .
si es que le iba agregar algo mas avanzado pero mejor lo corte hasta hay y se me olvido
quitar eso.
Reply
#5

Quote:
Originally Posted by bytytus
Посмотреть сообщение
en strcat el ultimo \n esta de mas .
eso importa?

Pd cesar repetiste los numeros el ultimo paso que deberia ser el 4 tiene el 3, esta bueno deberias poner mas funciones

Saludos.
Reply
#6

Quote:
Originally Posted by xSDx
Посмотреть сообщение
eso importa?

Pd cesar repetiste los numeros el ultimo paso que deberia ser el 4 tiene el 3, esta bueno deberias poner mas funciones

Saludos.
reparado claro que si pero despuйs le agrego mas cosas mediante vea las debilidades mas comunes de los usuarios
nuevos.

tal vez asta le cambie el titulo (si es que se puede)
Reply
#7

Buen aporte
Reply
#8

El ejemplo de strmid estб mal fijate siempre en los reurns de la funciуn, si no retorna nada en especнfico no lo puedes poner en un if.
Reply
#9

Update Agregue la explicaciуn y conceptos de strdel y strfiend mas tambiйn agregue conceptos a format y strcmp.
Reply
#10

Quote:
Originally Posted by Parka
Посмотреть сообщение
Update Agregue la explicaciуn y conceptos de strdel y strfiend mas tambiйn agregue conceptos a format y strcmp.
Quй pollas largas y gruesas es "strfiend"?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)