我如何在 C 中使用节点?
how do I use nodes in C?
(这是关于找出我的程序有什么问题)我对编程很陌生,我目前正在学习如何在 C 中使用结构和节点,我制作了这个应该读取和注册数据的简单程序一部电影,但我不知道我做错了什么,因为我的编译器不断显示:
•用不完整的 return 调用 'fillMovieData' 类型 'struct node' (在第 17 行)
•函数定义(第22行)中的结果类型'struct node'不完整
•returning 'struct cinema' 来自结果类型不兼容的结构 'struct node' (第 32 行)
你知道我该如何解决这个错误吗?我会很感激我能得到的所有反馈!
代码是:
#include<stdio.h>
#include<stdlib.h>
struct cinema{
char *name;
char *genre;
short year;
short numDirectors;
char *directors[10];
};
void printMovieData(struct cinema);
struct node fillMovieData(char *, char *, short , short , char *[10]);
int main(){
char *directors[10];
directors[0] = "Lana Wachowski";
directors[1] = "Andy Wachowski";
struct cinema matrix = fillMovieData("The matrix", "Fiction", 1999, 2, directors); // this is line 17
printMovieData(matrix);
return 0;
}
struct node fillMovieData(char *name, char *genre, short year,short numDirectors, char *directors[10]){ //this is line 22
struct cinema movie;
movie.name = name;
movie.genre = genre;
movie.year = year;
movie.numDirectors = numDirectors;
int cont = 0;
for ( ; cont < movie.numDirectors ; cont++){
movie.directors[cont] = directors[cont];
}
return movie; //this is line 32
}
void printMovieData(struct cinema movie){
printf("MOVIE: %s\n", movie.name);
printf("GENRE: %s\n", movie.genre);
printf("YEAR: %d\n", movie.year);
printf("DIRECTOR(S):\n");
int cont = 0;
for ( ; cont < movie.numDirectors ; cont++){
printf("%s\n", movie.directors[cont]);
}
}
第 17 行:
您定义了电影数据类型 struct cinema matrix
但您使用的函数
fillMovieData("The matrix", "Fiction", 1999, 2, directors);
returns 节点数据类型
第 22 行和第 32 行还试图说明您对 returning fillMovieData 函数
的值使用了不同的数据类型
struct node fillMovieData(char *, char *, short , short , char *[10]);
returns 类型 struct node
但在定义中你 return movie
是 struct cinema
数据类型的类型。
您的 fillMovieData
函数正在返回 movie
的值,其类型为 struct cinema
。此外,您没有类型 struct node
的定义,就像您对 struct cinema
.
所做的那样
我很清楚你是想将 fillMovieData
声明为
struct <strong><em>cinema</em></strong> fillMovieData( ... ) { ... }
。
(这是关于找出我的程序有什么问题)我对编程很陌生,我目前正在学习如何在 C 中使用结构和节点,我制作了这个应该读取和注册数据的简单程序一部电影,但我不知道我做错了什么,因为我的编译器不断显示:
•用不完整的 return 调用 'fillMovieData' 类型 'struct node' (在第 17 行)
•函数定义(第22行)中的结果类型'struct node'不完整
•returning 'struct cinema' 来自结果类型不兼容的结构 'struct node' (第 32 行)
你知道我该如何解决这个错误吗?我会很感激我能得到的所有反馈! 代码是:
#include<stdio.h>
#include<stdlib.h>
struct cinema{
char *name;
char *genre;
short year;
short numDirectors;
char *directors[10];
};
void printMovieData(struct cinema);
struct node fillMovieData(char *, char *, short , short , char *[10]);
int main(){
char *directors[10];
directors[0] = "Lana Wachowski";
directors[1] = "Andy Wachowski";
struct cinema matrix = fillMovieData("The matrix", "Fiction", 1999, 2, directors); // this is line 17
printMovieData(matrix);
return 0;
}
struct node fillMovieData(char *name, char *genre, short year,short numDirectors, char *directors[10]){ //this is line 22
struct cinema movie;
movie.name = name;
movie.genre = genre;
movie.year = year;
movie.numDirectors = numDirectors;
int cont = 0;
for ( ; cont < movie.numDirectors ; cont++){
movie.directors[cont] = directors[cont];
}
return movie; //this is line 32
}
void printMovieData(struct cinema movie){
printf("MOVIE: %s\n", movie.name);
printf("GENRE: %s\n", movie.genre);
printf("YEAR: %d\n", movie.year);
printf("DIRECTOR(S):\n");
int cont = 0;
for ( ; cont < movie.numDirectors ; cont++){
printf("%s\n", movie.directors[cont]);
}
}
第 17 行:
您定义了电影数据类型 struct cinema matrix
但您使用的函数
fillMovieData("The matrix", "Fiction", 1999, 2, directors);
returns 节点数据类型
第 22 行和第 32 行还试图说明您对 returning fillMovieData 函数
struct node fillMovieData(char *, char *, short , short , char *[10]);
returns 类型 struct node
但在定义中你 return movie
是 struct cinema
数据类型的类型。
您的 fillMovieData
函数正在返回 movie
的值,其类型为 struct cinema
。此外,您没有类型 struct node
的定义,就像您对 struct cinema
.
我很清楚你是想将 fillMovieData
声明为
struct <strong><em>cinema</em></strong> fillMovieData( ... ) { ... }
。