Viva
Gostaria de ajuda para declarar e preencher uma "array" de "char".
Tenho uma "array" que declaro da seguinte forma:
char texto[] = "ABCDEFGH";
Até aqui tudo bem, agora a minha duvida, se é possível,
e se a minha pergunta faz qualquer sentido (é que ja la vão uns
largos anos que não pegava em C ) preencher essa "array"
com o conteúdo de uma variável declarada da seguinte forma:
char *texto1 = "ABCDEFGH";
Basicamente o conteúdo da "array" passa a ser o conteúdo da variável.
qq coisa como:
char texto[] = (texto1);
Qualquer dica, agradeço.
Queres duplicar ou apontar para a mesma string?
Para copiar (duplicar) podes usar strcpy
bubulindo:
Queres duplicar ou apontar para a mesma string?
Para copiar (duplicar) podes usar strcpy
Viva.
Apontar. O conteúdo da variável texto1 vem da leitura de uma linha de 40 chars de um SDcard. Bastava apontar para o conteúdo da var texto1.
Eu testei:
char texto [] = {*texto1};
Mas sem resultado, o conteúdo vem truncado.
Obrigado.
Uma coisa assim funciona:
char texto[]="ABCD";
char *texto1 = texto;
Desta forma "texto1" fica a apontar para o mesmo conteúdo que "texto".
luisilva:
Uma coisa assim funciona:
char texto[]="ABCD";
char *texto1 = texto;
Desta forma "texto1" fica a apontar para o mesmo conteúdo que "texto".
Viva.
Grato, mas era o contrario, eu queria que o texto ficasse com o conteúdo do texto1.
Ja tinha conseguido o que pretendia. Fui pela 2 opção do bubulindo, resolvi assim:
strcpy ( texto, texto1);
.
Ja agora vou explicar para que queria isso.
Um familiar pediu para lhe arranja um display para fazer scrool de um texto com varias matrizes de leds para a tasca dele.
Ha tanto codigo ja pronto por ai, que a parte electronica para mim nao era complicado.
Depois lembrei-me que cada vez que ele pretende-se mudar o anuncio, tinha que la ir eu mudar isso. Resolvi o problema com um leitor de cartoes sd e uma pq lib que permite definir parâmetros e suas variáveis. Assim ele pega no cartao sd e muda isso no pc dele, texto e velocidade do scrool.
Na lib o texte esta definido por :
char *text_sc
e na parte dos leds era :
char texto[]="ABCD";
Aos dois, muito agradecido.
arssant:
Viva.
Grato, mas era o contrario, eu queria que o texto ficasse com o conteúdo do texto1.
(...)
Humm... Não sei se será bem assim.
arssant:
(...)
Na lib o texte esta definido por :
char *text_sc
e na parte dos leds era :
char texto[]="ABCD";
(...)
Para que uma string possa ser definida a forma:
char *text_sc
em algum sítio do código tem que existir uma coisa como:
char txt[11];
strcpy ( txt, "qualquer string");
*text_sc=txt;
Até pode não estar de forma explicita como aqui, mas isto tem que existir (outra opção é a utilização de alocação dinâmica de memória, mas duvido que isso seja usado).
Se as variáveis estão definidas dessa forma, o que eu tentaria fazer seria a conversão do vector para ponteiro:
char *texto;
seguidamente, após a leitura da string do SD, seria igualar os dois ponteiros:
texto = text_sc;
Isto assim deveria dar alguma coisa.
Já agora, qual é essa biblioteca de leitura de cartão?
luisilva:
em algum sítio do código tem que existir uma coisa como:
strcpy ( txt, "qualquer string");
Já agora, qual é essa biblioteca de leitura de cartão?
Boas.
Sim esta implementado na lib, nao no codigo.
È esta:
Tive que alterar-adicionar a lib para poder aceitar "longs e floats" nas config:
Utilizei essa lib para o meus dados: channel e key do thingspeak. No SD card assim tenho as definições de rede ( codigo do surfertim ) e do meu canal do teamspeak.
Basicamente o file no sd tem o seguinte formato:
texto=qwerty
tempo=50
O n de variaveis ? pelo menos 3 dão, mais não testei.
arssant:
(...)
Tive que alterar-adicionar a lib para poder aceitar "longs e floats"
(...)
Não devia ser necessário, bastaria ler a string e com essa implementar uma conversão usando "atoi" ou "atof" (ou algo do género).
Depois de ver a biblioteca continuo sem compreender porque é que uma coisa como:
luisilva:
(...)
char *texto;
seguidamente, após a leitura da string do SD, seria igualar os dois ponteiros:
texto = text_sc;
(...)
que é o mesmo (para quem entende linguagem C) que fazer:
luisilva:
(...)
char texto[]="ABCD";
char *texto1 = texto;
(...)
não funiona.
luisilva:
Não devia ser necessário, bastaria ler a string e com essa implementar uma conversão usando "atoi" ou "atof" (ou algo do género).
Depois de ver a biblioteca continuo sem compreender porque é que uma coisa como:
que é o mesmo (para quem entende linguagem C) que fazer:não funiona.
Viva.
Grato pela ajuda. Foi "necessário" porque é na própria lib que existe a conversão "atoi", faltava era "atof e atol". Quem fez a lib devia querer simplificar ao máximo a função de ler os dados no SD e passar para variáveis dentro do sketch principal.
Do resto, como disse ao inicio, C para mim foi a uns bons anos na faculdade... e por vx tenho alguns "breaks".
Mais uma vx, obrigado.