这不是全部程序,但不会运行超过此功能。似乎在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/