Tìm vị trí xâu con trong xâu bị sai

Em mới học c, đang tập viết hàm tìm vị trí của xâu a trong xâu b nếu ko có in ra -1 ( độ dài chuỗi a < độ dài chuỗi b). Nhưng bị lỗi ở chỗ nếu xâu a ngắn thì đc nhưng xâu a dài bị sai. Em debug phát hiện lỗi sai nhưng chưa biết sửa thế nào, các cao nhân giúp em với ạ. Em cảm ơn ạ!
Ví dụ:
em nhập vào:

123456789

đầu ra:

1234567 ra 0
12345678 ra -1 (đúng phải ra 0)
#include <stdio.h>
#include <string.h>

int timvitri(char a[], char b[])
{
	int length1 = strlen(a) - 1;
	int length2 = strlen(b);
	int i, j;
	for (i = 0; i < length1 - length2; i++)
	{
		char c[100];
		int z = 0;
		for (j = i; j < i + length2; j++, z++)
		{
			c[z] = a[j];
		}
		if (strcmp(c, b) == 0)
		{
			return i;
		}
	}
	return -1;
}

int main()
{
	char a[100];
	fgets(a, 100, stdin);
	char b[100] = "1234567";
	char c[100] = "12345678";
	int vitri1 = timvitri(a, b);
	int vitri2 = timvitri(a, c);
	printf("%d\n", vitri1);
	printf("%d", vitri2);
	return 0;
}

Input là a = "123456789", b = "12345678" thì length1 = 8, length2 = 8, hai cái trừ nhau ra 0 rồi, vì vậy vòng for đâu có chạy

3 Likes

em debug thì nhập “123456789” nó sẽ nhận khi cho vào hàm là “123456789\n” ( chắc do em dùng fgets để đọc). Nhưng em vẫn chưa biết cách sửa lại ạ. Nếu có code ở đâu mà về phần tìm xâu con này cho em xin với ạ!

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