通过C编码读取和显示文本文件的内容

时间:2013-09-13 14:40:41

标签: c text fgetc

我正在尝试用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.
               }

          }
     }
}

请帮帮我? :)拜托!

3 个答案:

答案 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),它可能会起作用。我没有尝试过运行它但它应该可以工作。