这不是全部程序,但不会运行超过此功能。似乎在fscanf语句附近有段错误,但我不认为这是导致错误的原因。我真的看不到任何可能导致segfault错误的内容,但是我是一个业余爱好者,可能错过了一些东西。所有的printf语句均用于调试目的。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#define N 10

struct point2d_def
{
    int x;
    int y;
};
typedef struct point2d_def point2d;

void fill(char str[], point2d P[])
{

    FILE *ifp = NULL;
    ifp = fopen(str, "r");
    int i = 0;

    if (ifp == NULL)
    {
        printf("Could not open %s for reading\n", ifp);
        exit(1);
    }

    for(i = 0; i < N; ++i)
    {
        fscanf(ifp, "%d %d", &P[i].x, &P[i].y);
    }

    fclose(ifp);
    printf("Fill function passed\n");
    return;
    printf("Blorp");
}

最佳答案

首先,您要在函式内部声明P[N],并在参数中接收P

其次,您正在写入11个插槽,而不是10个:

for(i = 0; i < N; ++i){
    fscanf(ifp, "%d %d", &P[i].x, &P[i].y);
}


删除= ...

关于c - 无法解决段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42603504/

10-13 06:40