我正在为学校做一个项目,这是一直在警告我的警告。 我的代码怎么了?
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]
我不知道该怎么做
答案 0 :(得分:6)
您的fprintf
调用有8个格式说明符,但又传递了9个参数来填充这些。
第8格式说明符是%d
;对应于此的参数是Item[i]->Name
。警告告诉您Item[i]->Name
是一个字符串,因此不能(不应该)转换为有符号整数。
我认为Item[i]->Price
的类型为int
;然后,您需要在格式字符串中添加额外的%s
(%d
之前的任何位置)或删除其中一个字符串参数。
答案 1 :(得分:0)
您的 fprintf 调用有 8 个格式说明符,但传递了 9 个进一步的参数来填充这些。
第 8 个格式说明符是 %d;与此对应的参数是 Item[i]->Name。警告告诉您 Item[i]->Name 是一个字符串,因此不能(不应该)转换为有符号整数。
我假设 Item[i]->Price 的类型是 int;然后,您需要在格式字符串中添加额外的 %s(在 %d 之前的任何位置)或删除其中一个字符串参数。