簡體   English   中英

如何在單獨的行中從文件中讀取字符串和整數

[英]How to read in both Strings and Ints from a file, on seperate lines

因此,我一直在搜索您的網站,但我仍然不清楚如何執行此操作,因此,我將盡我所能解釋。

我有一個像這樣的輸入文件:

2
Joe Flacco
1 3 5 6 7 8
Tom Brady
7 9 10 15 52 53

第一個數字是文件中“人員”的數目,第二個是他們的名字和姓氏。 接下來是[0,53]之間的6個整數,它們是它們的“彩票”數字。 無論如何,我可以讓我的代碼輸入第一個數字,但是事實證明,獲取他們的姓名和數字非常困難。

最后一部分是使其適應我們聲明的結構(我們必須使用該結構,該結構包含變量firstName [20] lastName [20]和數字[6]。我知道我要如何完成所有工作)正確,但我正在發布代碼,以便大家可以看到我在做什么。我非常感謝您提供的所有幫助;此外,我正在嘗試學習如何做,而不是讓您為我准備一個正確的程序,所以任何解釋都非常歡迎。

for(int i=0; i < numPlays;i++)
{   
        char firstName[20];
        char lastName[20];
        for(int x=0; x<3;x++)
       fscanf(fr, "%c", &firstName[x]);
       for(int x=0; x<6;x++)
       fscanf(fr, "%c", lastName[x]);   
        for(int g=0; g<6; g++)
        {
        fscanf(fr, "%d", &Steve.numbers[g]);
        }
        temp[i]= Steve;
            //Tester code, lets hope this works
        for(int x=0; x<3;x++)
        printf("The persons name is %c.\n",&firstName[x]);
        //printf("The persons last name is %c.\n",temp[i].lastName);
}

使用fgets strtokatoi將為您提供所需的東西。 至於程序的結構,您可能想要這樣的東西:

typedef struct Player {
    char name[20];
    int numbers[6];
} Player;
#define SIZE(x) (sizeof(x)/sizeof(*(x)))

Player readplayer(){
      Player p;
      int x;
      char * num;
      //read a line with fgets;
      //memcpy() to p.name;
      //read another line
      for(num=strtok(line, " "),x=0;x<SIZE(p.numbers);x++, num=strtok(NULL," "))
          p.numbers[x] = atoi(num);
      return p;     
}

int main()
{
     //read a line with fgets
     int x, nplayers = atoi(line);
     Player *players = malloc(nplayers*sizeof(Player));
     for(x=0;x<nplayers;x++)
         players[x] = readplayer();
}

您可以為此使用fgets()函數。 它會將行讀為String。 將數字讀取為字符串后,只需將其轉換為整數即可。

您可以將讀取文件和分析內容分開, 例如 ,定義readline()並獨立分析每一行, 例如example

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM