[Ajuda] String com parte de outra O.o
#1

Bom eu preciso fazer algo que serб como no exemplo, porйm ocorre me erros entгo fiz um DEBUG, alguem tem uma idйia do que pode ser?

PHP код:
main()
{
    
teste("""");
}
forward teste(str1[], str2[]);
public 
teste(str1[], str2[])
{
    
strcpy(str1"STRING1"10);
    
strcpy(str2"STRING2"10);
    print(
str1);
    print(
str2);
}
strcpy(dest[], source[], size=sizeof(dest))
{
    
dest[0] = '\0';
    
strcat(destsourcesize);

No console aparece:

Код:
[20:13:20] SSTRING2
[20:13:20] STRING2
Quando deveria aparecer: '-'
Код:
[20:13:20] STRING1
[20:13:20] STRING2
Reply
#2

Que coisa mais bizarra. Fiquei aqui a investigar mas nгo cheguei a nenhuma conclusгo. Aconselho vocк postar isso na бrea inglкsa se nгo obtiver nenhuma resposta aqui.
Reply
#3

Algo Fбcil Porйm pouco discutido na Board!

PHP код:
#include <a_samp>
main()
{
    
teste("""");
}

new 
Parte[2][23];

stock teste(strfind[], strfoulder[])
{
    
format(Parte[0], 23"Leonardo"strfind);
    print(
Parte[0]);
    
format(Parte[1], 23"Bradoks"strfoulder);
    print(
Parte[1]);
    return 
1;

Reply
#4

Nгo use format para isso tem o strmid e o memcpy

Mas o seu problema deve ter nesse 10 aн no fim retire ele nгo precisa desse parвmetro visto que ele o obtйm automaticamente
Reply
#5

Quote:
Originally Posted by PT
Посмотреть сообщение
Nгo use format para isso tem o strmid e o memcpy

Mas o seu problema deve ter nesse 10 aн no fim retire ele nгo precisa desse parвmetro visto que ele o obtйm automaticamente
Acho q memcpy e strmid nгo terб grande ultilidade p.p
Nгo o 10 йo tamanho mбximo da string, pois se eu nгo adicionar ele irб resultar um warning dizendo que o tamanho da string nгo foi determinado, pois usei sizeof em uma matriz sem numero de celulas prй definidos.

Mesmo assim descobri que o erro deve-se ao fato de que eu passo uma string prй definida para a funзгo assim ela nгo pode receber valores, e no caso o certo seria:

PHP код:
main()
{
    new 
str1[10], str2[10];
    
teste(str1str2); 

forward teste(str1[], str2[]); 
public 
teste(str1[], str2[]) 

    
strcpy(str1"STRING1"10); 
    
strcpy(str2"STRING2"10); 
    print(
str1); 
    print(
str2); 

strcpy(dest[], source[], size=sizeof(dest)) 

    
dest[0] = '\0'
    
strcat(destsourcesize); 

Aos outros obrigado
Reply
#6

Quote:
Originally Posted by PT
Посмотреть сообщение
Nгo use format para isso tem o strmid e o memcpy

Mas o seu problema deve ter nesse 10 aн no fim retire ele nгo precisa desse parвmetro visto que ele o obtйm automaticamente
Porque nгo usar? e oque vocк disse sobre obter o valor automaticamente estб errado! Atualize suas includes.
A forma ideal de fazer oque ele estб querendo й utilizando a format pois nгo da erros e funciona perfeitamente, e outra coisa percebi que apenas eu trouxe uma soluзгo funcional para ele ao contrбrio de outros que sу visualizaram.
Reply
#7

Quote:
Originally Posted by [BOPE]Seu._.Madruga
Посмотреть сообщение
Porque nгo usar? e oque vocк disse sobre obter o valor automaticamente estб errado! Atualize suas includes.
A forma ideal de fazer oque ele estб querendo й utilizando a format pois nгo da erros e funciona perfeitamente, e outra coisa percebi que apenas eu trouxe uma soluзгo funcional para ele ao contrбrio de outros que sу visualizaram.
Format й lento para copiar strings.
O propуsito para que foi feito e para formatar nгo copiar.

Atualizar que includes? Ta doente?

Os mйtodos que falei acima sгo mais rбpidos que format para copiar strings
Reply
#8

Quote:

A lot of people tend to copy strings like this:

PHP код:
format(destsizeof (dest), "%s"src); 
This is one of the worst ways to do it! I did timings on six different methods of copying strings, in all cases "b" is the destination and "a" is the source. "strcpy" is a hand written PAWN function to copy strings:

PHP код:
strmid(ba0strlen(a), sizeof (b));
format(bsizeof (b), "%s"a);
b[0] = '\0';
strcat(basizeof (b));
memcpy(ba0strlen(a) * 4sizeof (b)); // Length in bytes, not cells.
strcpy(ba);
a
Note that "b = a;" is the standard PAWN array copy and only works for arrays known at compile time to be the same size, or with a larger desination. Unfortunately I ran a range of tests and they do not point to a single best function. What they DO do is show quite clearly that both the hand coded PAWN version and format are very slow at copying strings:

For short strings in small arrays, "b = a;" is fastest when applicable, strcat with prior NULL termination (important) is second.

For short strings in large arrays, strcat is fastest.

For longer strings in longer arrays, "b = a;" is again fastest, with memcpy second.

For huge arrays "b = a;" seems to be fastest.

Where possible use standard array assignment, however this is not always possible, for example when a string of unknown size is passed to a function. In these cases I would suggest using strcat (if you're interested, note the bizzare syntax):

PHP код:
#define strcpy(%0,%1,%2) \
    
strcat((%0[0] = '\0', %0), %1, %2
Use:

PHP код:
strcpy(destsrcsizeof (dest)); 
Nгo hб necessidade em usar format, ou mesmo atualizar includes LOL
Reply
#9

Tu sу confirmou que eu tava certo nгo sei onde queres chegar agora
Reply
#10

Quote:
Originally Posted by PT
Посмотреть сообщение
Tu sу confirmou que eu tava certo nгo sei onde queres chegar agora
Era em relaзгo a este post, ele insistindo em um "erro"

Quote:
Originally Posted by [BOPE]Seu._.Madruga
Посмотреть сообщение
Porque nгo usar? e oque vocк disse sobre obter o valor automaticamente estб errado! Atualize suas includes.
A forma ideal de fazer oque ele estб querendo й utilizando a format pois nгo da erros e funciona perfeitamente, e outra coisa percebi que apenas eu trouxe uma soluзгo funcional para ele ao contrбrio de outros que sу visualizaram.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)