我正在研究C中的一个项目并偶然发现了一些问题,希望你们能帮助我们!该项目只是操纵用户通过标准输入创建的坐标点。我在下面列出了不同的文件及其功能;
//points.h
struct Point{
int x;
int y;
}
//reads points from stdinput into our points array
int pointReader(struct Point points[]);
///////////////
//points.c
void pointReader(struct Point points[]){
//points[] is originally empty array (filled with NULLS)
struct Point point;
char buffer[10];
printf("X Coordinate:");
fgets(buffer, 10, stdin);
point.x = (int)buffer;
printf("Y Coordinate:");
fgets(buffer, 10, stdin);
point.y = (int)buffer;
append(points, point);
}
static void append(struct Point points[], struct Point point){
int i;
for (i = 0; i < 10; i++){
if (points[i] == NULL){
points[i] = point;
}
编译后,我收到以下错误,我不太清楚为什么:
points.c:115:10: error: invalid storage class for function 'append'
points.c: In function 'append':
points.c:127:17: error: invalid operands to binary == (have 'struct Point' and 'void *')
另外,我可以像我试图那样轻松地“折腾”points[]
阵列吗?
感谢您的任何评论!
答案 0 :(得分:2)
第一个错误很可能因为您在调用之前尚未声明函数append
。在调用之前添加函数原型。换句话说,在pointReader
定义之前,添加以下行:
static void append(struct Point points[], struct Point point);
第二个错误是因为points
数组中的值是而不是指针,因此不能像指针那样对待(比如将它与NULL
进行比较)。您必须使用另一种方法来检查是否使用了数组中的条目。例如,使用x
的{{1}}和y
值或类似的值。
您还有另一个问题,那就是您不能通过强制转换将字符串转换为整数。你必须使用诸如strtol
之类的函数:
-1