簡體   English   中英

如何使用C從.txt文件的特定點讀取整數?

[英]How to read integers from a specific point of a .txt file using C?

我需要使用C語言實現游戲,該游戲的功能是使玩家能夠保存游戲以便以后玩。 要求是通過以下方式將游戲數據保存在.txt文件中:1)第一行的玩家人數; 2)第二行表中的紙牌,由玩家0和現有的紙牌標識。 3)每個玩家的下一個信息:玩家人數(如果是真正的玩家或機器人)(如果是機器人則為1,如果是機器人則為0),玩家名稱,點數和手中的牌。 請參閱下面的示例格式,該示例說明了我需要如何在.txt文件上存儲數據:

2\n
0:T;23,43,45\n
1:0;John;23:12,32,44,43\n
2:1;BOT1;34:43,54,53,45\n
EOF

現在,我不知道如何在播放器在此.txt文件之后加載游戲時將其存儲在結構播放器[0] .cards [7]中,例如,播放器1(名為John)的紙牌。 。 如何將播放器1(John)的名稱保存到播放器[0] .name中,然后將第二個播放器(BOT1)的名稱保存到播放器[1] .name中。

我已經嘗試了好幾天了,但是沒有成功。 有人可以幫助我了解如何將.txt文件上特定位置的特定數字/字符串存儲回我的代碼中嗎? 如何使我的代碼讀取數字,例如12,32,44,43並將其存儲在適當的數組中。 如何使代碼使用所有行(“:”,“;”)瀏覽文件 和“,”。

我不是在尋求解決方案。 我只是希望有人能啟發我的頭腦,以便我找到執行此操作的正確方法。 歡迎任何幫助。 謝謝。

假設您使用fgets逐行讀取文件; 然后,您可以分別解析每一行和該行的每個部分。 就數字列表而言,您可以使用strrchr查找最后一個冒號的位置,然后使用strtok將逗號分隔的值一一拆分。 希望能幫助到你。

int main() {

    char aSingleLine[] = "1:0;John;23:12,32,44,43\n";
    char* lastColon = strrchr(aSingleLine,':');
    if (lastColon) {
        char* numbers = lastColon+1; // one after the last colon;
        int i=0;
        char *numStr = strtok(numbers,",");
        while(numStr != NULL) {
            int numVal;
            if (sscanf(numStr,"%d",&numVal)==1) {
                printf("%dth value: %d\n", i, numVal);
            }
            else {
                printf("invalid number: %s",numStr);
            }
            i++;
            numStr = strtok(NULL,",");
        }
    }
}

輸出:

0th value: 12
1th value: 32
2th value: 44
3th value: 43

暫無
暫無

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

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