3

我在为学校做一个项目,这是一直困扰我的警告。我的代码有什么问题?

fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%d\n", Item[i]->ID, Item[i]->Date, Item[i]->Adress,
                                       Item[i]->Street number, Item[i]->Postal Code,
                                       Item[i]->City, Item[i]->Phone,Item[i]->Name,
                                       Item[i]->Price);

还有另一个警告:

警告:格式“%d”需要“int”类型的参数,但参数 10 的类型为“char *”[-Wformat]

我不知道该怎么办

4

2 回答 2

8

您的fprintf调用有 8 个格式说明符,但传递了 9 个进一步的参数来填充这些说明符。

第 8 个格式说明符是%d; 与此对应的参数是Item[i]->Name。警告告诉您这Item[i]->Name是一个字符串,因此不能(不应该)转换为有符号整数。

我想Item[i]->Price有类型int%s然后,您要么需要在格式字符串中添加额外的内容(在 之前的任何位置%d),要么删除其中一个字符串参数。

于 2013-06-13T16:03:57.813 回答
0

您的 fprintf 调用有 8 个格式说明符,但传递了 9 个进一步的参数来填充这些说明符。

第 8 个格式说明符是 %d;与此对应的参数是 Item[i]->Name。警告告诉您 Item[i]->Name 是一个字符串,因此不能(不应该)转换为有符号整数。

我假设 Item[i]->Price 的类型为 int;然后,您要么需要在格式字符串中添加额外的 %s(在 %d 之前的任何位置),要么删除其中一个字符串参数。

于 2021-02-25T06:35:33.900 回答