Может кто-нибудь, пожалуйста, проведите меня через это:
когда я пытаюсь выполнить свою программу без какой-либо ошибки компиляции, я получаю ошибку ошибки сегментации при копировании символов из одной строки в другую строку. Для справки: моя программа обнаруживает наиболее часто встречающуюся подстроку указанной длины из строки
мой код выглядит следующим образом:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char* format(char* str,int l);
void main(){
char *str=malloc(1024*sizeof(char));
char *sub;
int i;
printf("\n Enter the string : ");
fgets(str,1024,stdin);
printf("\n");
puts(str);
printf("\nEnter max no of char for substrings:");
scanf("%d",&i);
sub=malloc(i*sizeof(char));
strcpy(sub,format(str,i));
printf("\nSubstring : %s",sub);
free(str);
}
char* format(char* str,int l){
int i,j,k,x,max,pos;
int len =strlen(str);
int *arr=(int*)malloc(len*sizeof(int));
char **subs =(char**)malloc(len*l*sizeof(char));
printf("\n test 1 %s %d",str,l);
for(i=0;i<len-l;i++){
for(j=0;j<l;j++){
*(*(subs+i)+j)=*(str+i+j);
}
}
printf("\n test 2");
for(i=0;i<l;i++){
for(j=0;j<i;j++){
x=strcmp(subs[i],subs[j]);
if(x==0){
arr[i]=arr[j]+1;
}
}
}
printf("\n test 3");
max=arr[0];
for(i=0;i<l;i++){
if(arr[i]>max){
max=arr[1];
pos=i;
}
}
printf("\n test 4");
return subs[i];
}
после прохождения теста 1 в формате функции () программа перестает отвечать на запросы.
for(i=0;i<len-l;i++){
for(j=0;j<l;j++){
*(*(subs+i)+j)=*(str+i+j);
}
}
Пожалуйста, проведите меня через это, ваша помощь будет очень признательна.