我正在嘗試讀取文件(其中包含「標準」文本和「二進制」數據)的內容。從文件讀取擴展ASCII字符並將其轉換爲ASCII十進制值
然後我需要採取該字符(標準或擴展ASCII)並獲得相應的十進制(int)ASCII值。
我有一段時間讓它正常工作。
這裏是代碼,以幫助顯示我正在做的事情的一個片段......
FILE *fp = fopen(file, "r+");
char *value = NULL;
size_t charSize = sizeof(char) + 1;
value = malloc(charSize);
strcpy(value, "0");
fseek(fp, offset, SEEK_SET);
fgets(value, charSize, fp);
int c = (int)value;
free(value);
我看了是說,你需要使用一個無符號字符的ASCII擴展的事情,但是改變爲unsigned char不解決問題(並給編譯警告)
我也使用的wchar_t的代碼嘗試:
....
wchar_t *value = NULL;
value = malloc(2);
wcscpy(value, (wchar_t *)"");
fseek(fp, offset, SEEK_SET);
fgetws(value, 2, fp);
int c = (int)value;
這些都不似乎工作。基本上所有的東西都是0,或者是一些「隨機」的值。
例如使用任何三個,我得到: 值:%(正確) C:76678304(號碼是每次都不同,但在這同「範圍」)(東西告訴我這是不正確的): )
那顯然我做錯了什麼,但我似乎無法推測出來......
任何幫助將是非常讚賞。
這似乎工作的偉大使用字符「%」。我需要使用其他的擴展ascii還是我仍然可以使用char? – kdbdallas 2010-07-14 04:31:49
實際上你應該確保數組/字符串指針類型在讀取之前是'unsigned char *'(或者將其轉換爲這種類型)。順便說一句,沒有「擴展ASCII」這樣的東西。 – 2010-07-14 08:46:09
+1表示添加明確的轉換以避免警告/錯誤通常表示代碼在開始時是錯誤的。 – 2010-07-14 09:29:58