繁体   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