注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

融智技术学院

融智技术学院163分站,为广大好友提供更多的帮助

 
 
 

日志

 
 

【C语言每日一问】载入我的链接表的问题  

2014-03-18 09:35:13|  分类: C语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
问题:我似乎不能得到我的代码,来直接载入每个结点的。它要么载入正确的字符串,要么载入正确的整型数,但是2个都不行,当我声明头为NULL,在每次运行while循环以后。

这是一个家庭作业,所以提示而不仅仅是修改代码将感激不尽。

  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <string.h>
  •  
  • #define NAME_LENGTH 20
  • #define CHAMP_LENGTH 20
  • #define TEAM_LENGTH 10
  •  
  • typedef struct player{
  •     char* name;
  •     char* champion;
  •     char* team;
  •     int kills;
  •     int deaths;
  •     struct player *next;
  • }Player;
  •  
  • Player* new_player(char* name, char* champion, char* team, int kills, int deaths);
  • Player* insert_by_player(Player* head, Player* node);
  • void print(Player* head);
  • int update_records(Player* head, char* champion, char* champ_name, int kills, int death);
  • void free_node(Player* node);
  • Player* delete_player_even(Player* head);
  • Player* delete_plyaer_odd(Player* head);
  • Player* reverse_list(Player* head);
  •  
  • int main(int argc, char* argv[])
  • {
  •     if (argc<1)
  •     {
  •       printf("Incorrect number of arguements\n");
  •       return 0;
  •     }
  •  
  •     Player* head = NULL;
  •     Player* node = NULL;
  •     char name[NAME_LENGTH] = "";
  •     char champion[CHAMP_LENGTH] = "";
  •     char team[TEAM_LENGTH] = "";
  •     int kills, deaths = 0;
  •     FILE *in = fopen(argv[1], "r");
  •  
  •     while (1)
  •     {
  •       fscanf(in, "%s%*c%s%*c%s%*c%d%*c%d%*c", name, champion, team, &kills, &deaths);
  •  
  •       if (feof(in)) break;
  •  
  •       node = new_player(name, champion, team, kills, deaths);
  •       head = insert_by_player(head, node);
  •  
  •     }
  •     print(head);
  •     fclose(in);
  • return 0;
  • }
  •  
  • Player* new_player(char* name, char* champion, char* team, int kills, int deaths)
  • {
  •     Player* n = malloc(sizeof(Player));
  •     n->name = name;
  •     n->champion = champion;
  •     n->team = team;
  •     n->kills = kills;
  •     n->deaths = deaths;
  •     n->next = NULL;
  •  
  •     return n;
  • }
  •  
  • Player* insert_by_player(Player* head, Player* node)
  • {
  •     Player* temp;
  •  
  •     if (head == NULL)
  •     {
  •       head = node;
  •       return head;
  •     }
  •     else
  •     head->next = insert_by_player(head->next, node);
  •  
  • return head;
  • }
  •  
  • void print(Player* head)
  • {
  •     if (head == NULL)
  •        return;
  •     else
  •     {
  •       printf("%s %s %s %d %d\n", head->name, head->champion, head->team, head->kills, head->deaths);
  •       print(head->next);
  •     }
  • }

输入文件被标记为roster.txt

Yellowstar Thresh Fnatic 0 4
Dyrus Jayce Solomid 6 2
Chaox Jinx None 8 1
Hotshotgg Nidalee CLG 4 4
Phreak Orianna Riot 10 5
Bioamp Chogath None 2 2

 

回答:修改

  • typedef struct player{
  •     char name[NAME_LENGTH];
  •     char champion[CHAMP_LENGTH];
  •     char team[TEAM_LENGTH];
  •     int kills;
  •     int deaths;
  •     struct player *next;
  • }Player;
  •  
  •  
  • Player* new_player(char* name, char* champion, char* team, int kills, int deaths)
  • {
  •     Player* n = malloc(sizeof(Player));
  •     strcpy(n->name , name);
  •     strcpy(n->champion, champion);
  •     strcpy(n->team , team);
  •     n->kills = kills;
  •     n->deaths = deaths;
  •     n->next = NULL;
  •  
  •     return n;
  • }
  评论这张
 
阅读(8)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017