【发布时间】:2013-08-04 09:24:18
【问题描述】:
我是 C 的新手,对于我的班级,我们有一个项目,我们必须在其中编写一个函数,该函数读取文件中的所有项目并以文件顺序在动态创建的列表中返回它们。 文件的每一行都是一项,格式如下:
'<description>' <damage> <cost> <weight>
它应该按文件顺序返回指向文件中项目的基指针,如果文件不存在,则返回 NULL。
到目前为止,这是我的代码:
item_t *ReadItemsFromFile(char *file)
{
typedef struct item item_t;
struct item
{
char name[32];
float cost, weight;
int dam;
};FILE *fpin = fopen(file, "r");
if(fpin != NULL)
{
item_t i[20];
int n = 0;
char line[sizeof(file)];
while(fgets(line, sizeof(line), fpin) != NULL){
(fscanf(fpin, " '%[^']' %d %f %f", i[n].name, &i[n].dam, &i[n].cost, &i[n].weight));
fputs(i[n].name, stdout);
n++;
}
} else {
return NULL;
}
return(0);
}
我一直在使用 fputs 来尝试测试代码,但它总是让我在第一个和最后一个项目上出现乱码。 另外,当我尝试放
fputs(&i[n].dam, stdout);
所以我可以测试结构的其他变量,我不断收到错误消息“从不兼容的指针类型传递 'fputs' 的参数 1。
我不确定我是否使用 fscanf 准确地将结构变量传递给了结构变量,或者它是否是其他东西。
【问题讨论】:
-
请在使用前阅读本网站上的标签信息。 RPG是一种计算机语言。 (咆哮警报:RPG 也不是很能描述电脑游戏。你能说“我正在扮演……的角色”的游戏比例有多大?即使回到旧的电子游戏:我正在玩青蛙过马路的角色。我扮演宇宙飞船飞行员的角色,向小行星射击。等等)
-
别忘了关闭你成功打开的文件。您的“列表”是否应该包含指向列表中下一项的指针,还是可以接受数组?