我想阅读具有以下格式的文本文件:
3
COD
Halo
Madden
2
Tom Jones 1 3 2
Bill Ray 3 2 1
........
我想通过创建投票系统来弄清楚n个人之间的顶级视频游戏选择。 第一个int是游戏数量。然后有3行视频游戏名称。然后有一个代表人数的int,然后是他们的名字,然后是他们对游戏的偏好排名。
我需要帮助开始这个计划。有什么建议吗?
答案 0 :(得分:0)
参见下面的例子,它应该让你开始,它将从输入文件中读取每一行,你可以为每一行做任何你需要的事情:
#include <err.h>
#include <stdio.h>
int
main()
{
FILE *f;
size_t len;
char *line;
f = fopen("inputfile.txt", "r");
if (f == NULL)
return 0;
while (line = fgetln(f, &len)) {
/*DO whatever you need to do for each line here.*/
fwrite(line, len, 1, stdout);
}
if (!feof(f))
err(1, "fgetln");
return 0;
}
答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct player {
char *name;
int *rank;
} Player;
int main(){
FILE *fp;
if(NULL==(fp=fopen("data.txt", "r"))){
perror("file open");
return -1;
}
//read name of game
int numOfGame;
fscanf(fp, "%d", &numOfGame);
char gameName[numOfGame][64];
int i;
for(i=0;i<numOfGame;++i){
fscanf(fp, "%63s", gameName[i]);
}
//read gamer
int numOfGamer;
fscanf(fp, "%d%*c", &numOfGamer);
Player players[numOfGamer];
char line_buf[128];
int j;
for(i=0;i<numOfGamer;++i){
fgets(line_buf, sizeof(line_buf), fp);
char *p = strchr(line_buf, ' ');
p = strchr(p+1, ' ');//second space
*p = '\0';
players[i].name = strdup(line_buf);
players[i].rank = calloc(numOfGamer, sizeof(int));
for(j = 0;j<numOfGame;++j){
sscanf(++p, "%d", &players[i].rank[j]);
p = strchr(p + 1, ' ');
}
}
fclose(fp);
//test print
printf("name\t\t");
for(i=0;i<numOfGame;++i){
printf("%s\t", gameName[i]);
}
printf("\n");
for(i=0;i<numOfGamer;++i){
printf("%s\t", players[i].name);
for(j = 0;j<numOfGame;++j){
printf("%d\t", players[i].rank[j]);
}
printf("\n");
}
//release
for(i=0;i<numOfGamer;++i){
free(players[i].name);
free(players[i].rank);
}
return 0;
}