首页 > 解决方案 > 字符串上的 fscanf 导致分段错误

问题描述

我有一个三行输入文件。第一行是一个整数,第二行是带空格的整数,第三行是一个字符串。

我必须扫描它们而不是根据整数操作字符串。

我的问题是我可以扫描整数,但是扫描字符串会导致 fclose 出现分段错误。

我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 

int main()
{
    FILE* in = fopen("be.txt", "r");
    FILE* out = fopen("ki.txt", "w");

    if(in==NULL){
        printf("Error opening in!\n");
        return -1;
    }
    if(out==NULL){
        printf("Error opening out!\n");
        return -1;
    }

    int brknglength, i;

    fscanf(in, "%d", &brknglength);

    printf("%d\n", brknglength);

    int* seed[brknglength];
    seed[brknglength] = malloc(sizeof(int[brknglength]));

    for(i = 0; i < brknglength; i++){
        if (fscanf(in, "%d", &seed[i]) != 1) {
            printf("%d", i);
        }
        printf("%d.: %d \n", i, seed[i]);

    }

    char string;

    fscanf(in, "%s", &string);


    free(seed[brknglength]);

    fclose(in);
    fclose(out);
    return 0;
}

是什么导致分段错误?

标签: cfilesegmentation-faultscanf

解决方案



推荐阅读