2016-06-07 79 views
0

我正在爲我的編程課程製作一個簡單的遊戲。而且我無法將播放保存到二進制文件,它只寫入座標字母。將int保存爲二進制文件c

整型數字僅僅是一個數量從6至8 字符字母從A只是一個字母J.

我想座標出現像A1文件...

有誰知道如何解決它?

這裏的功能:

void makeLoad(FILE *f,char letter, int number){ 
    f = fopen("save.dat", "a+"); 
    if(f==NULL) { 
     printf("Erro no acesso ao ficheiro\n"); 
     return ; } 
     printf("%c\n", letter);//debug purposes 
     printf("%d\n", number);//debug purposes 

    fwrite(&letter,sizeof(letter),1,f); 
    fwrite(&number,sizeof(number),1,f); 

    fclose(f); 
    } 

我在最後期待​​有一個像A1B3C5 戲劇的序列,但我得到的只有ABC ......數字是

之間

這裏的失蹤如果需要完整的文件:http://pastebin.com/WzynZuaC

+0

多大的輸出文件?你如何檢查其內容?您是否期望以文本的形式找到該號碼? – Dmitri

+0

'fwrite'返回了什麼? – stackptr

+0

我期待在最後有一個像A1B3C5 ... – m3k3r1

回答

0

這裏有一個快速的方法,你能解決這個問題,只要數量僅爲個位數:

char c = '0' + number; 
fwrite(&c,sizeof(c),1,f); 

你正在做的是將int的二進制表示寫入文件,這與ASCII表示形式不一樣。例如,字符'6'的二進制表示是00110110,而int 6的二進制表示是00000000000000000000000000000110.當要寫入前者時,將後者寫入文件。在數字中加'0'會添加00110000,隱式強制轉換後會給出正確的二進制值。

的更清潔的方式來解決你的代碼來替換一個fprintf中調用fwrite調用,爲您完成所有的工作:

fprintf(f, "%c%d", letter, number);