Code ghép chuỗi không ra kết quả

Em đang thực hiện ghép chuỗi str1 và str2, nhưng khi xuất em ra không được kết quả, mọi người giúp em với ạ

#include "stdio.h"
#include "string.h"

int STRLEN(char *s)
{
	int n = 0;
	while (s[n] != '\0')
	{
		n++;
	}
	return n;
}

char* strAdd(char* str1, char *str2)
{
	int i = 0, n1 = STRLEN(str1), n2 = STRLEN(str2), n = n1 + n2;
	char s[100];
	int k = 0;
	while (i < n1)
	{
		s[k] = str1[i];
		i++;
		k++;
	}
	i = 0;
	while (i < n2)
	{
		s[k] = str2[i];
		i++;
		k++;
	}
	s[k] = '\0';
	return s;
}

void main()
{
	char str1[] = "ABCDE", str2[] = "FGHI";
	printf("Chuoi Sau Khi Ghep La: %s\n", strAdd(str1,str2));
	printf("Thanks For Using!!!\n");
}

cách giải của bạn đúng đó, bạn bị lỗi như nào, chụp ảnh xem

1 Like

Mình đã ra được rồi bạn, chỉ là mình thêm một vài dòng ở main và sửa lại hàm strAdd

char* SUBSTR(char *s, int x, int y)
{
	char ketqua[100];
	int idx = 0;

	for (int i = x; i <= y; i++)
	{
		ketqua[idx++] = s[i];
	}
	ketqua[idx] = '\0'; // Kết thúc
	return ketqua;
}

int STRLEN(char *s)
{
	int n = 0;
	while (s[n] != '\0')
	{
		n++;
	}
	return n;
}

char* strAdd(char* str1, char *str2)
{
	int i = 0, n1 = STRLEN(str1), n2 = STRLEN(str2), n = n1 + n2;
	char *s = (char*)malloc(n*sizeof(char));
	int k = 0;
	while (i < n1)
	{
		s[k] = str1[i];
		i++;
		k++;
	}
	i = 0;
	while (i < n2)
	{
		s[k] = str2[i];
		i++;
		k++;
	}
	s[k] = '\0';
	return s;
}

void main()
{
	char str1[] = "ABCDE", str2[] = "FGHI";
	char *p = strAdd(str1, str2);
	printf("Chuoi Sau Khi Ghep La: %s\n", p);
	printf("Thanks For Using!!!\n");
}

Lỗi là do s trong hàm add nó lưu trên stack, ra khỏi hàm thì nó bị huỷ. Nên kết quả là bất định. Có thể cấp phát động cho s, hoặc đưa s là tham số của hàm

2 Likes

đưa s là tham số của hàm là sao vậy bạn?

This post was flagged by the community and is temporarily hidden.

Cái này là tự mình viết hàm mà bạn, đâu có dùng hàm viết sẵn đâu bạn

This post was flagged by the community and is temporarily hidden.

1 Like

This post was flagged by the community and is temporarily hidden.

1 Like

Ừa :D, mình cảm ơn bạn nhiều nha

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?