2014-07-16 60 views
0

我正在將下列1-D數組的值寫入文件(文本文件),但是當我通過雙擊打開它時,它不可讀。爲什麼這樣??也請告訴我解決方案,以便我可以寫一個文件(文本文件)並通過雙擊來閱讀它。如何通過雙擊直接使用fwrite讀取文件

#include "stdafx.h" 
int main() 
{FILE *fp; 
int a[5] = { 1, 2, 3, 4, 5}; 
fp=fopen("myfile.txt", "w"); 
fwrite(a, sizeof(int), 5, fp); 
fclose(fp); 
} 
+0

你想寫的數字,而不是數字的ascii值。 – mch

回答

0

字符使用ASCII代表 - 一個數值。 當用1到5聲明數組並將其寫入fwrite()時,您的意思是「寫出這裏表示的字符」而不是數字,這意味着它會將其視爲具有該ASCII值的字符。 如果你想編寫字符1,你應該寫'1'來聲明它是一個字符,並說你正在使用它的ASCII碼('1'的ASCII碼是49)。 這是ASCII表格: http://www.asciitable.com/ 如果你看看這些值的ASCII表格,你會看到這些字符不是普通的,你不能看到他們,他們沒有字體或什麼 - 它只是通常爲電腦本身。例如,以NULL結尾的字符串(ASCII爲0)。 您嘗試編寫SOH時,例如嘗試寫入第一個元素等。 要糾正你的代碼,你應該把兩個撇號,一個由數的每一側將其聲明爲一個數字,字符,方式如下:

int a[5] = {'1', '2', '3', '4', '5'}; 

,並使用一個int只使用沒有4個字節,您可以看到您最多可以顯示256個字符,可以用一個字節表示(一個字節-8位 - 2^8 = 256個值,可以用一個字節表示),因此您可以聲明:

char a[5] = {'1', '2', '3', '4', '5'}; 

保存一些內存。

0

您正在將文字數字1-5寫入文件,可能只是無法正確顯示您使用的任何程序。

如果要編寫對應於「1」 - 「5」的字符,請使用fprintf或fstream。