1 – 6 de 6
Anônimo Anônimo disse...

char *strcpy(char *dest, char *orig)
{
while(orig)
{
dest = orig;
dest++;
orig++;
}
return dest;
}

19 de março de 2013 às 18:27

Anônimo Anônimo disse...

Utilize strncpy e cuidado com off by one. strNNNNNNNNNNcpy

[]s

20 de março de 2013 às 10:49

Anônimo C Progressivo disse...

Olá,

Como dissemos no artigo sobre a biblioteca string.h, o objetivo de re-fazermos essas funções é apenas como exercício.

Lá deixamos bem claro que essas tentativas de criar essas funções é somente didático, para saber como as coisas funcionam (por isso podem surgir várias soluções, como a do anônimo de cima), e sugerimos que cada um tente criar as suas funções do seu próprio jeito, e não copiar a implementação original.

Também deixamos bem claro que, na hora de usar em um programa de verdade, devemos usar as funções da biblioteca original, que obviamente são bem mais confiáveis.

Obrigado aos dois pela contribuição.

22 de março de 2013 às 18:42

Anônimo Anônimo disse...

Se a *orig é copiada até antes do terminador nulo \0 , a string *dest não ficaria sem esse terminador?

ao meu ver, a função deveria ser como abaixo pra garantir que esse terminador também seja copiado pra
*dest


char *strcpy(char *dest, char *orig)
{
int i;

for(i=0 ; i <= strlen(orig) ; i++)
dest[i] = orig[i];

return dest;
}

10 de fevereiro de 2014 às 21:57

Blogger Unknown disse...

estou tentando usar essa strcpy, mas quando o ponteiro a aponta para outro ponteiro está dando erro. SEGUE ABAIXO A PARTE DO CÓDIGO EM QUE USO O STRCPY.


noLista* selectionSort(noLista *ini){
char nomeA[30];


noLista* aux = ini;//aux= ini
noLista* aux2, *tempo;
float tmp, min;

for(aux = ini; aux!=NULL; aux = aux->prox){
tempo = aux;
min = aux->nota;
exibe(ini);
for(aux2 = aux->prox; aux2!=NULL; aux2 = aux2->prox){

if( aux2->nota < min){

min = aux2->nota;

strcpy(nomeA, aux2->nome);
tempo = aux2;

}

}
if(aux->nota != min){

tmp = aux->nota;
printf("tmp nota %f\n", aux->nota);
strcpy(nomeA, aux->nome);
aux->nota = min;

strcpy(aux->nome, aux2->nome);
strcpy(aux2->nome, nomeA);
tempo->nota = tmp;

strcpy(tempo->nome, nomeA);

}



}

return ini;
}


A PARTE DO CÓDIGO QUE ESTÁ GERANDO O ERRO

4 de fevereiro de 2015 às 08:24

Anônimo Anônimo disse...

Oi,
Como eu compilo isso? Precisa de int main()? Alguém ode me dar um exemplo?

21 de maio de 2019 às 03:57

É quase impossível criar centenas de páginas voltadas para programação C e não cometer algum erro.

- Se notar algum conceito, letra ou trecho de código errado, deixe sua correção

- Se perceber uma maneira melhor ou mais eficiente de fazer algo, deixe sua ideia

- Se algo não ficar claro ou for confuso, nos avise

Aos poucos vamos aumentando e melhorando a qualidade de nosso material, e para isso contamos com sua ajuda.
Você pode usar algumas tags HTML, como <b>, <i>, <a>

A moderação de comentários foi ativada. Todos os comentários devem ser aprovados pelo autor do blog.

Depois de enviar seu comentário, será necessário fazer login.
Prove que você não é um robô