Ir ao conteúdo

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


Ir à solução Resolvido por isrnick,

Posts recomendados

Postado

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
  • Solução
Postado

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
Postado
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.

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...