Lỗi trong nhớ vị trí của mảng

Chào anh chị, em đang viết trương trình xuất vị trí chuổi nhỏ nằm ở đâu trong chuỗi lớn.
Trong phương pháp làm em có dùng mảng để nhớ vị trí chữ cái đầu tiên của chuổi nhỏ trong chuỗi lớn, nhưng khi viết thì em có gặp lỗi là mảng k nhớ vị trí được,mong mọi người giúp đỡ.

#include <iostream>
#include <cstring>
using namespace std;
void ktra_s2_s1(char buffer[],char buffer2[],int len,int len2);
int main(){
	char buffer[100];
	cin.getline(buffer,100,'\n');
	int len=strlen(buffer);
	cout<<"Nhap chuoi 2";
	char buffer2[100];
	cin.getline(buffer2,100,'\n');
	int len2=strlen(buffer2);
	ktra_s2_s1(buffer,buffer2,len,len2);
	return 0;
}
void ktra_s2_s1(char buffer[],char buffer2[],int len,int len2){
	if(len>len2){
		bool ktra=true;
		int phu=0;
		int a[100],s[100];
		for(int i=0;i<len;i++){
			if(buffer[i]==buffer2[0]){
				a[phu]=i;
			//	s[phu]=i;
				phu++;
				cout<<"vi tri trung: "<<i<<endl;
			}
		}
		a[2]=4;
		cout<<endl<<"so cai trung: "<<phu<<endl;
		for(int i=0;i<phu;i++){
		    cout<<a[phu]<<endl;
		}
		/*for(int i=1;i<len2;i++){
			for(int k=0;k<phu;k++){o
				if(buffer2[i]!=buffer[s[k]++]){
					s[k]=-1;
				}
			}
		}
		for(int i=0;i<phu;i++){
			if(s[i]!=-1){
				cout<<s[i];
		    }   
	    }*/
	}
}


những số.

0
0
0
...

Đó là em xuất vị trí trùng, nhưng nó k xuất đúng mà cứ 0 0 vậy, em k hiểu tại sao.

Nên dùng a[phu] hay a[i] đây?


Tham số của hàm ktra_s1_s2() chỉ cần char buffer[], char buffer2[] là đủ rồi, độ dài thì tính bên trong hàm. Sao lại cứ phức tạp hóa các tham số nhỉ?

4 Likes

dạ em yếu quá,em cảm ơn rất nhiều lời góp ý của anh

Thực ra không cần biết length chỉ cần thấy byte 0 là hết chuỗi :smiley:

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