我正在尝试用C编写一个处理种族选择的游戏。 每个种族都有自己的“故事”,当用户选择阅读他们的故事时, 我想要发生的是,
当程序在命令提示符下运行时,它将显示我在该特定文本文件中键入的有关所选种族故事的内容。
这是我到目前为止所做的。
void Race(char nameRace[20])
{
int race_choice,race_choice2,race_story;
FILE *race;
FILE *race1;
FILE *race2;
FILE *race3;
printf("The Races: 1.Human 2.Elf 3.Orc\n");
printf("Press 1 for Details of Each Races or 2 for selection: ");
scanf("%d",&race_choice);
if (race_choice==1)
{
printf("Which Race do you wish to know about?\n\t1.The Human\n\t2.The Elf\n\t3.The Orc\n\t: ");
scanf("%d",&race_story);
if (race_story==1)
{
race1=fopen("race1.txt","r");
fgetc(race1); // This does not display what I have typed on the race1.txt file on Command prompt.
// And I plan to write 2~3 paragraphs on the race1.txt file.
printf("\nGo Back to the Selection?(1 to Proceed)\n ");
scanf("%d",&race_choice2);
if (race_choice2==1)
{
printf("\n\n");
Race(nameRace);
}
else
{
wrongInput(race_choice2);// This is part of the entire code I have created. This works perfectly.
}
}
}
}
请帮帮我? :)拜托!
答案 0 :(得分:1)
您似乎缺乏的功能是能够读取文本文件并将其输出。因此,编写一个能够执行此操作的函数可能是一个好主意,然后只要您需要显示文件的内容,您就可以将文件名传递给我们的函数并让它处理工作,例如
static void display_file(const char *file_name)
{
FILE *f = fopen(file_name, "r"); // open the specified file
if (f != NULL)
{
INT c;
while ((c = fgetc(f)) != EOF) // read character from file until EOF
{
putchar(c); // output character
}
fclose(f);
}
}
然后在你的代码中将其称为例如。
display_file("orcs.txt");
答案 1 :(得分:0)
fgetc函数读取,并从文件返回单个字符,它不打印它。 所以你需要做以下事情:
while(!feof(race1)) { // Following code will be executed until end of file is reached
char c = fgetc(race1); // Get char from file
printf("%c",c); // Print it
}
它将打印race1
char-by-char。
答案 2 :(得分:0)
我认为您可能希望逐行阅读文件,因此最好使用fgets()
代替fgetc()
。
示例:
while(!feof(race1)) // checks to see if end of file has been reached for race1
{
char line[255]; // temporarily store line from text file here
fgets(line,255,race1); // get string from race1 and store it in line, max 255 chars
printf("%s",line); // print the line from the text file to the screen.
}
如果用上面的代码块替换fgetc(race1)
,它可能会起作用。我没有尝试过运行它但它应该可以工作。