Ошибка сегментации возникает во время доступа к строкам из массива - PullRequest
0 голосов
/ 08 мая 2020
#include <stdio.h>
#include <stdlib.h>
#include<string.h>

// Here the parameter is an array of pointers
int* assign(char** arr,char** q,int* j, int m)
{
    printf("ping 0\n");
    int c=0;
    int k;
    for (int i = 0; i < m; i++)
    {
        for(int f=0;f<m;f++)
        {
        k=strcmp(arr[f],q[i]);
        printf("ping 1\n");
        if(k==0)
        c++;
        }
        j[i]=c;
        printf("ping2\n");
        c=0;
    }
    return j;

}

// Program to pass 2D array to a function in C
int main(void)
{
    int m = 3;
    int n = 3;
    int* g;
    int j[10];

    // dynamically create array of pointers of size m
    char **arr = (char **)malloc(m * sizeof(char *));
    char **q = (char **)malloc(m * sizeof(char *));

    // dynamically allocate memory of size n for each row
    for (int r = 0; r < m; r++)
    {
        arr[r] = (char *)malloc(n * sizeof(char));
        q[r]=(char *)malloc(n * sizeof(char));
    }


     printf("enter the strings\n");
    for (int i = 0; i < m; i++)
    {
        scanf("%s",arr+i);
    }

    printf("enter the queries\n");
    for (int i = 0; i < m; i++)
    {
        scanf("%s",q+i);
    }


    g=assign(arr,q,j,m);


    for (int i = 0; i < m; i++)
    printf(" %d\n",g[i]);

    return 0;
}

Это код для ввода некоторых слов в массив строк и набора запросов в другой массив строк. задача состоит в том, чтобы в основном найти количество появлений запрошенных строк из исходного массива, поместить их в одномерный массив и вернуть его. Но ошибка сегментации возникает, когда for l oop внутри функции assign пытается получить доступ к строкам. Скажите, пожалуйста, в чем я ошибаюсь и почему.

...