![](/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.