Bài tập c: Tìm chuỗi trong chuỗi

Chào mọi người ạ, hôm nay e gặp bài tập là tìm số lần xuất hiện của ‘ng’ trong chuỗi nhập từ bàn phím, em có code như sau:

#include "stdio.h"
#include "string.h"
int tim(char s[100]);
main()
{
	char a[100];
	printf("nhap chuoi: ");
	gets(a);
	printf("so lan xuat hien cua 'ng' trong chuoi la: %d",tim(a));
}
int tim(char s[100])
{
	int c=0;
	while(strstr(s,'ng')!=NULL)
	{
		c++;
		strcpy(s,strstr(s,'ng')+2);
	}
	return c;
}

Code xong em cho chạy thì luôn ra như thế này

IMG_20210403_234740

Xin mọi người chỉ em với, em phải làm sửa như thế nào để hoàn thành bài tập ạ, em xin cảm ơn.

@Amtu2000 Bạn vui lòng đọc warning message mà mình gửi cho bạn, edit topic này và báo lại cho mình biết. Nếu trong vòng 24h mà bạn không có phản hồi thì topic này sẽ bị đóng tự động.

Ý nghĩa đoạn này là gì?

2 Likes

strstr có trả về con trỏ thì cứ ++ rồi truyền tiếp chứ làm cái j vậy bạn :smiley:

3 Likes

@SITUVN.gcd
Hàm strstr(s,'ng')sẽ cho địa chỉ của chuỗi ‘ng’ lần đầu xuất hiện trong chuỗi s
-> strcpy(s,strstr(s,'ng')+2)sẽ xóa từ bắt đầu chuỗi s đến hết hai chữ ‘ng’ đầu tiên

Bài yêu cầu tìm chứ không kêu xóa.

Đọc câu trả lời của @rogp10 đi.

2 Likes

Cảm ơn mọi người nhé

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