Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido]Cópia de char


Marcia Rosa

Pergunta

Olá,

Novamente recorro a ajuda de vocês porque tem coisas que ainda estou aprendendo e descobrindo os segredos.

Baixei um código da internet onde tem a seguinte variável:


static uint8 var1[512+1];
strcpy(var1, "123456");
[/CODEBOX]

Nesse caso acima está estático. E preciso do valor dinâmico.

Daí tentei assim (e não funcionou):

[CODEBOX]
static uint8 var1[512+1];
char str_tmp = "123456";
strcpy(var1, str_tmp);

Tentei assim (e não funcionou):


static uint8 var1[512+1];
char *str_tmp = "123456";
strcpy(var1, str_tmp);
[/CODEBOX]

Tentei assim (e não funcionou):

[CODEBOX]
static uint8 var1[512+1];
char str_tmp = "123456";
strcpy(var1, (char)str_tmp);

Tentei assim (e não funcionou):


static uint8 var1[512+1];
char str_tmp = "123456";
int i = 0;
for(i = 0; i <= strlen(str_tmp) - 1; i++){
//tentei...
var1[i] = (byte)str_tmp[i];
//tentei
var1[i] = (int)str_tmp[i];
}
[/CODEBOX]

Qualquer dica que pode me ajudar a achar um caminho, serve.

Obrigada.

Editado por Marcia Rosa
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Se for erro de compilação, posta a saida do compilador.

Abraço.

Ronaldo, está compilando perfeitamente. Só que não tenho debugar porque testo num terminal com características específicas que não tenho como simular no meu PC. Daí ao rodar lá, ou não pega o valor ou dá erro e a app reinicia sem exibir a mensagem de erro.

Obrigada.

Link para o comentário
Compartilhar em outros sites

  • 0
Já tentou botar char no lugar de uint8? E também não compreendi o seu erro.

Tem uns códigos que você postou que não deve dar certo mesmo. Esse trecho mesmo não rola:

char str_tmp = "123456";
Tenta assim pra ver:
uint8 var1[512+1]; // Porque não 513 ?
strcpy(var1, "123456");

Abraço.

Ronaldo,

Não posso mudar o uint8 pois faz parte do sistema já em uso onde existem outras bibliotecas usando esse modelo.

O 512+1 também não entendi porque foi feito assim. Como estava assim, não mexi.

Quanto a sua dica de usar o strcpy para a variável var1, como eu disse assim sempre funcionou! Só que os valores devem ser dinâmicos e não estáticos como está ali.

Mesmo assim, agradeço.

Marcia.

Link para o comentário
Compartilhar em outros sites

  • 0

Talvez o 512+1 seja para armazenar 512 caracteres na string (512 + 1 do null), e o autor quis deixar explícito essa informação.

"uint8" deve significar "unsigned char", não é a mesma coisa que char.

O problema no código não está no strcpy, está na declaração da string.

static    uint8    var1[512+1];
char str_tmp = "123456";  /* não funciona, pois um char somente guarda um byte, e você está querendo armazenar 7 (6 + 1 do null, o terminador da string) */
strcpy(var1, str_tmp);
Você deve fazer assim:
static    uint8    var1[512+1];
char str_tmp[] = "123456";  /* funciona, pois o compilador está alocando 7 bytes para a variável str_tmp */
strcpy(var1, str_tmp);

É isso que você quer?

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0
Talvez o 512+1 seja para armazenar 512 caracteres na string (512 + 1 do null), e o autor quis deixar explícito essa informação.

"uint8" deve significar "unsigned char", não é a mesma coisa que char.

O problema no código não está no strcpy, está na declaração da string.

static    uint8    var1[512+1];
char str_tmp = "123456";  /* não funciona, pois um char somente guarda um byte, e você está querendo armazenar 7 (6 + 1 do null, o terminador da string) */
strcpy(var1, str_tmp);
Você deve fazer assim:
static    uint8    var1[512+1];
char str_tmp[] = "123456";  /* funciona, pois o compilador está alocando 7 bytes para a variável str_tmp */
strcpy(var1, str_tmp);

É isso que você quer?

Abraços!

Durub,

Primeiro peço desculpas pela demora em responder mas estava em viagem. E obrigada pela explicação. Testei aqui e já me ajudou. ao menos posso correr atrás do resto agora.

Obrigada pela peciência de explicar, pois como disse estou começando no C e tenho vícios de outras linguagens, e alguns colegas de fórum acham que estamos pedindo para resolver o problema mas na verdade uma simples explicação já ajudaria para esse e vários outros problemas que possamos vir a encontrar.

Abç

Marcia.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...