Ir ao conteúdo
  • Cadastre-se
marcos12345

C RESOLVIDO Criar uma função strcat e strncat usando ponteiro

Recommended Posts

Preciso saber aonde estou errando nesse código

#include <stdio.h>

char *strcat(char *s1, const char *s2);
char *strncat(char *s3, const char *s4, size_t n);

int main(){
	char s1[]="sistemas ";
	char s2[]="de irnformacao";
    strcat(s1,s2);
	printf("%s\n",s1);

	printf("\n");

	char s3[]="curso ";
	char s4[]="de sistemas de infomacao";

	strncat(s3,s4,11);
	printf("%s\n",s3);

	return 0;
}
//Função para concatenar o conteudo de uma string para outra normalmente
char *strcat(char *s1, const char *s2){
	int i,tam_s1=0,tam_s2=0,aux=0,j;

	for(i=0; s1[i]!='\0'; i++){
		tam_s1++;//tamanho da string s1.
	}
	for(i=0; s2[i]!='\0';i++){
		tam_s2++;//tamanho da string s2
	}
	aux=tam_s1+tam_s2;

	for(i=tam_s1,j=0; i<aux,j<tam_s2; i++,j++){
		s1[i]=s2[j];
	}
  	s1[aux]='\0';
	return s1;
}
//Função para concatenar o conteudo de uma string para outra especificando o tamanho a ser concatenado.
char *strncat(char *s3, const char *s4, size_t n){
	int i,tam_s3=0,aux=0,j;

	for(i=0; s3[i]!='\0'; i++){
		tam_s3++; //tamanho da sring s3.
	}

	for(j=0; j<n ; j++){
		s3[tam_s3]=s4[j];
		tam_s3++;
	}
	s3[tam_s3]='\0';
	return s3;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os vetores de chars s1 e s3 do main() não são longos o suficiente para armazenar a string completa concatenada.

 

Declarar o vetor assim:

char s1[]="sistemas ";

Cria um vetor de chars com o número exato de posições para caber a string "sistemas ", ou seja esse vetor tem 10 posições, e a string original já está preenchendo todas as posições. Se tentar concatenar algo nesse vetor vai estar tentando acessar posições que não existem no vetor.

 

Faça o vetor ser pelo menos grande o suficiente para armazenar a string concatenada.

char s1[25]="sistemas ";

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
agora, isrnick disse:

Os vetores de chars s1 e s3 do main() não são longos o suficiente para armazenar a string completa concatenada.

 

Declarar o vetor assim:


char s1[]="sistemas ";

Cria um vetor de chars com o número exato de posições para caber a string "sistemas ", ou seja esse vetor tem 10 posições, e a string original já está preenchendo todas as posições. Se tentar concatenar algo nesse vetor vai estar tentando acessar posições que não existem no vetor.

 

Faça o vetor ser pelo menos grande o suficiente para armazenar a string concatenada.


char s1[25]="sistemas ";

 

valeu cara muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×