c - 段错误: 11 while running C program

标签 c runtime-error

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

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

我创建了两个函数,其中一个 (palavra) 从句子中获取一个单词,然后 func 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

关于c - 段错误: 11 while running C program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413117/

相关文章:

c# - SignTool 错误 : Access is denied

c - 将 char 数组分配给 char*

c - 如何控制特定进程的 CPU 使用率?

java - 是JDK的bug吗?

java - ViewPager 致命异常 : main

java - 运行时异常 : Unable to instantiate activity

c - 分配内存并将输入从文件读取到结构数组

c - 未指定的启动失败 - CUDA 中的并行扫描

c - 确定性位加扰以过滤坐标

java - Liquibase 导致 java 堆空间 fatal error