![](/img/trans.png)
[英]How to search for specific strings and integers in a .txt file C and use them?
[英]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.