Dúvida C

Software e Hardware para uC PSoC

Moderadores: andre_luis, 51

Dúvida C

Mensagempor Ricardo_Franco » 06 Fev 2007 15:43

Ola Senhores.
Gostaria de saber quando utilizamos as funções de manipulação de string em C do tipo “strcpy”, ou “strcat”, os compiladores já colocam o caractere “null” no final da string, ou devemos colocar na mão?

Ricardo Franco
Ricardo_Franco
Byte
 
Mensagens: 305
Registrado em: 11 Out 2006 20:53
Localização: Campinas - SP

Mensagempor jcapura » 07 Fev 2007 19:43

Sim, o compilador matem o "null".

Faz um teste com a rotina abaixo:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

main(void)
{
int d;
char str1[100],str2[100];

printf ("Entre com uma string: ");
gets (str1);
strcpy (str2,"string ");
strcat (str2,str1); /* str2 armazenara"string" + o conteudo de str1 */
printf ("\n\n%s\n",str2);

for (d=0;d<strlen(str2)+4;d++)
printf ("caractere='%c'\n",str2[d]);

return(0);
}

O programa acima concatena a string digitada com o valor da variável str2. Depois mostra na tela a string concatenada e mostra em caracteres com + 5 valores depois do final, observe que ao final dos caracteres digitados deve haver um caracter 0.

Abraço,
Jorge Capura
jcapura
Bit
 
Mensagens: 19
Registrado em: 13 Dez 2006 12:02

Mensagempor Ricardo_Franco » 07 Fev 2007 21:52

Ola Jorge.
Aconteceu uma coisa muito curiosa comigo.
Eu uso o turbo C++ 3.0 para testar meus algoritmos, mas algumas funções da biblioteca string.h não funcionam exatamente da mesma forma no PSoC.
No turbo eu posso escrever a seguinte linha.
strcpy (strVariavelString, “Texto que eu quiser”);
que ele coloca o valor 0 (zero) “null”, no final.

No PSoC eu resolvi da seguinte forma, lembrando que eu estava utilizando o CY8C27443

strcpy (strVariavelString, “Texto que eu quiser”);
strVariavelString[19] = 0;

ai funcionou.

Quando eu testei de novo mas agora no CY8C29466. Ai não funcionou nada disso tive que usar outro comando parecido (este comando consta no PSoC C Compiler Guide)

cstrcpy (strVariavelString, “Texto que eu quiser”);

Muito curioso depois eu vi que o C no começo do comando é referente a constante, por isso um tratamento diferente.

Outra coisa que notei foram as quantidades de “warning” que aparecem quando compilo o CY8C27443, mas quando compilo o CY8C29466 (com o mesmo código fonte), eu consigo tirar todos os “warnings”. Isso eu também não sei explicar.

O importante é que funcionou.

Obrigado pela presteza Jorge.

Ricardo Franco
Ricardo_Franco
Byte
 
Mensagens: 305
Registrado em: 11 Out 2006 20:53
Localização: Campinas - SP

Mensagempor jcapura » 07 Fev 2007 22:30

Bom saber, pobre de nós que não temos nenhum livro que aborde linguagem C para Psoc.

Abraço
Jorge Capura
jcapura
Bit
 
Mensagens: 19
Registrado em: 13 Dez 2006 12:02

Mensagempor mrtabs » 08 Fev 2007 09:39

mas qual o tamanho de strVariavelString?
mrtabs
Nibble
 
Mensagens: 70
Registrado em: 24 Out 2006 09:27
Localização: Santos e/ou Sao Paulo

Mensagempor Ricardo_Franco » 08 Fev 2007 22:24

Ola Senhores.
foi apenas um exemplo pela metade. o vetor que usei dispunha de N+1 para o "null".
Esse é um detalhe que alguns acabam esquecendo, de considerar o caracter "null"

Ricardo Franco
Ricardo_Franco
Byte
 
Mensagens: 305
Registrado em: 11 Out 2006 20:53
Localização: Campinas - SP


Voltar para Cypress

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x