Ir ao conteúdo
  • Cadastre-se

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


Ir à solução Resolvido por isrnick,

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

  • Solução

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
Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...