gpt4 book ai didi

c - 打印链表的float元素显示不正确?

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:57 25 4
gpt4 key购买 nike

我有一个链表,它从文件中读取一些信息并将其显示到屏幕上。一切都正确读取,但是当我去显示“秒”时,显示的数字类似于 -431602080.000000 而不是 27.123000。我不知道为什么。

 //GLOBAL VARIABLES
struct PlayerTime* list_head = NULL;

void besttimes_view()
{
struct PlayerTime *p;
p = list_head;

while(p!=NULL){
printf("%f : %s\n", p->seconds, p->name); //This prints the name correctly, but the number is wrong. Something like -431602080.000000 : Calvin
p = p->next;
}
}

有人知道发生了什么事吗?

最佳答案

while((fgets(input,MAX_STR_LEN,fileName)!=NULL)){
p=(struct PlayerTime*)malloc(sizeof(struct PlayerTime));

您为每个 fgets() 分配一个新的播放时间,但您只将它添加到列出所有其他的 fgets()。您添加到列表中的那个没有秒设置就可以了,只有名字。

换句话说,你设置的播放时间永远不会被添加到列表中。只有您设置名称的那个才会添加到列表中。

    if(counter==1){
p->seconds=atof(input); // this p is never added to the list
printf("%f\n",p->seconds); //This prints the number as it should be (e.g. 27.123000)
}
if(counter==2){
strcpy(p->name,input); // this p is added to the list
counter=0;
p->next=list_head;
list_head = p;
}

关于c - 打印链表的float元素显示不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19107591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com