30/09/2018, 21:33

[C/C++] Ghép Chuỗi

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] != '')
	{
		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] = '';
	return s;
}

void main()
{
	char str1[] = "ABCDE", str2[] = "FGHI";
	printf("Chuoi Sau Khi Ghep La: %s
", strAdd(str1,str2));
	printf("Thanks For Using!!!
");
}
Dzu viết 23:34 ngày 30/09/2018

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

Thanh Bình Lê viết 23:34 ngày 30/09/2018

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");
}
Gió viết 23:41 ngày 30/09/2018

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

Thanh Bình Lê viết 23:48 ngày 30/09/2018

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

Tao Không Ngu. viết 23:45 ngày 30/09/2018

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

Thanh Bình Lê viết 23:50 ngày 30/09/2018

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

Tao Không Ngu. viết 23:37 ngày 30/09/2018

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

Tao Không Ngu. viết 23:37 ngày 30/09/2018

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

Thanh Bình Lê viết 23:43 ngày 30/09/2018

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

Bài liên quan
0