Lỗi khi code stack trên C

Sau một hồi loay hoay k in đc các phần từ của stack ra màn hình, hóa ra là vì d = -255. Các pro cho em hỏi tại sao d nó lại = -255 vậy, và repair kiểu gì ạ

#include<conio.h>
#include<stdio.h>
#define max 20

// stack
struct stack
{
	int d;
	char mang[max];
};
void khoitao(stack &st)
{
	st.d=-1;
}
int full(stack st)
{
	return (st.d==max-1);
}
int rong(stack st)
{
	return (st.d==-1);
}
int them(stack &st, char them)
{
	if(full(st))
	{
		printf("Full, k them dc");
	}
	else
	{
		st.mang[++(st.d)] = them;
	}
}
int xoa(stack &st, char xoa)
{
	if(rong(st))
	{
		printf("Rong, k co gi de xoa");
	}
	else
	{
		xoa = st.mang[(st.d)--];
	}
}
int show(stack st)
{
}
int main()
{
	int i=1;
	stack st;
	khoitao(st);
	char so;
	printf("Nhap phan tu cho stack\n");
	printf(" = a thi dung nhap\n");
	do
	{
		printf("Phan tu %d = ", i);
		scanf("%s", &so);
		them(st, so);
		i++;
	}
	while(so != 'a' && i<=max);
	if(st.d==-1)
	{
		printf("\nStack rong");
	}
	else if(st.d==(max-1))
	{
		printf("\nStack day");
	}
	else
		printf("\nStack chua day\n");
	}
	printf("%d", st.d);
	getch();
}

Chào Duc_Ngo1!

  1. Bạn nên tìm hiểu đây là ngôn ngữ C hay C++
  2. Bạn có thể giải thích code cho mình hiểu bạn đang viết cái gì không
1 Like

đây là ngôn ngữ c, mình viết trên trên phần mềm c free, những thứ viết ở trên là 1 ngăn xếp(stack), hay nói cách khác là 1 mảng nhưng thêm phần tử và xóa phần tử đều ở 1 đầu

1 Like

Undefined behavior này.

scanf("%s", &so);

so có phải char* đâu. Dùng getchar() nhé, printf() chỉ dùng cho số thôi.

3 Likes

đây là ngôn ngữ C++ không phải là C. C không có tham biến void khoitao(stack &st) Mong bạn học lại ngôn ngữ C

3 Likes

để mình fix lại coi tks bạn

Tham chiếu

[spoiler]This text will be blurred[/spoiler]

2 Likes

Em cảm ơn anh! Em hay lẫn lộn 2 cái này!

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