段错误:11 while 运行 C 程序

Segmentation fault: 11 while running C program

我正在尝试 运行 以下代码,但在输入字符后出现分段错误。

有人知道这里会发生什么吗?

我创建了两个函数,其中一个 (palavra) 从句子中提取一个词,然后函数 compare_dicionario 试图在字典文件中找到匹配的词。

main函数就是为了测试这两个函数而建的,但是我输入了这个词组后就不行了...

#include <stdio.h>
#define MAX 1000

int compare_dicionario(int tam, char pal[MAX]) {
    FILE * entrada_dic;
    int leitura, i, j=0, parar, achou;
    char pal_dic[MAX];
    entrada_dic = fopen("dicionario.txt", "r");
    while(leitura!=EOF && !achou) {
        parar = 0;
        achou = 1;
        for(i=j; !parar; i++) {
            leitura = fscanf(entrada_dic, "%c", &pal_dic[i]);
            if(pal_dic[i] == '\n') {
                i--;
                j++;
                parar = 1;
            }
        }
        if(tam == i) {
            for(i=0; i<tam && !achou; i++) {
                if(pal[i] != pal_dic[i])
                    achou = 0;
            }
        }
        else
            achou = 0;
    }
    fclose(entrada_dic);
    return achou;
}

void palavra(int n, int *m, int *l,char texto[MAX], char pal[MAX]) {
    int i;
    *l = 0;
    for(i=*m; i<n && ((texto[i] >= 'a'&& texto[i] <= 'z') || (texto[i] >= 'A'&& texto[i] <= 'Z')); i++) {
        pal[*l] = texto[i];
        *l = *l+1;
    }
    while(!((texto[i] >= 'a'&& texto[i] <= 'z') || (texto[i] >= 'A'&& texto[i] <= 'Z'))) {
        i++;
    }
    *m=i;
}

int main() {
    int n, i, cont=1, n_pal, m=0, tam, achou=0;
    char c[MAX], pal[MAX];
    printf("Entre com o tamanho da sequência de caracteres:\n");
    scanf("%d", &n);
    printf("Entre com os caracteres:\n");
    for(i=0; i<n; i++) {
            scanf(" %c", &c[i]);
    }
    for(i=0; i<2; i++) {
        palavra(n, &m, &tam, c, pal);
        if(compare_dicionario(tam, pal) == 1) {
            achou++;
        }
    }
    printf("%d", achou);
    return 0;
}

只是一个想法,在这里:

for(i=0; i<2; i++) {
    palavra(n, &m, &tam, c, pal);// here
    if(compare_dicionario(tam, pal) == 1) {
        achou++;
    }
}

为什么要在函数参数中使用地址,该地址稍后分配给迭代器,您的函数需要一个指针将其提供给她。

for(i=*m;..

再读一些东西here