我是C新手(實際上編程),我需要爲大學做一個tic tac toe遊戲。使用直接存取二進制文件
在每場比賽結束時,我需要將球員信息保存在txt文件中,並將遊戲信息保存在二進制文件中。
中的.txt是如下: playerName; X | O; playerName; X | O
的binarye文件接收匹配號碼,整個陣列(3×3)與玩家匝(X | O)和比賽結果(X | O | V <)。
由於我需要在一系列遊戲結束時顯示所有匹配項,因此我打算遍歷txt文件並針對每一行訪問二進制文件中的相應信息。
這正確生成txt文件:
void inc_txt(){
FILE *f = fopen("tictac.txt", "a+");
fprintf (f, "%s;%c;%s;%c\n", name1, jog1, name2, jog2);
fclose(f);
}
這顯然是記錄只是一個比賽細節occurency:
void inc_bin(char result){
memcpy(Match.TicTac, tictac, sizeof(Match.TicTac));
Match.result = result;
FILE *bfp = fopen ("tictac.bin", "wb");
fwrite(&Match, sizeof(struct TicTac), 1, bfp);
fclose(bfp);
}
這成功地從bin文件打印出一個匹配的內容:
FILE* f1 = fopen ("tictac.bin", "rb");
fread(&Match, 1, sizeof(struct TicTac), f1);
printf("Match: %d \n", Match.match);
for(int lin = 0 ; lin < 3 ; lin++){
for(int col = 0 ; col < 3 ; col++){
printf(" %c ", Match.TicTac[lin][col]);
if(col != (3-1))
printf("|");
}
putchar('\n');
}
putchar('\n');
printf("Result: %c", Match.result);
fclose(f1);
在pascal(學習alg)我用來聲明一個類型和na文件,然後尋找(文件,位置),並可以讀或寫在給定的位置(我會通過迭代txt文件),沒有問題,但我不知道如何實現等同的任務C.感覺我應該以某種方式乘以塊大小或fread指針,但是到目前爲止找不到解決方案。
如何從二進制文件中找到特定的匹配詳細信息?
如果您已經知道如何生成.txt文件,要寫入bin文件並從這些文件讀取數據......您想要準確地知道什麼? – yLaguardia
您提到的Pascal函數的C相當於'fseek()',通常用於結構化二進制文件,而不是文本文件。此外,如果您再次調用類似的'fread',您的代碼將成功打印出一個匹配結果,則會在文件中獲得* next *匹配結果。 –
所以我必須使用fseek()寫入th bin文件。 fseek(bfp,linefromcounttxt,seek_set)? 我對這個尋求的誤解是,在pascal中,我將該文件聲明爲「結構文件」,但在C上沒有找到類似的內容。如何指定塊長度? 此外,沒有必要尋求閱讀,因爲我會迭代txt文件,對吧? –