这并不是全部程序,但是它不会超越此功能。它似乎在FSCANF语句附近有Segfault,但我认为这不是导致错误的原因。我真的看不到任何可能导致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 readingn", ifp);
exit(1);
}
for(i = 0; i < N; ++i)
{
fscanf(ifp, "%d %d", &P[i].x, &P[i].y);
}
fclose(ifp);
printf("Fill function passedn");
return;
printf("Blorp");
}
首先,您在func内声明P[N]
,并在参数中接收P
。
第二,您正在写入11个插槽,而不是10个插槽:
for(i = 0; i < N; ++i){
fscanf(ifp, "%d %d", &P[i].x, &P[i].y);
}
删除=
...