所以即時通訊全新的C.我需要編寫一個程序,接受一個整數的二進制文件作爲輸入,與malloc分配一個足夠大的數組,然後使用read()c函數將二進制文件中的每個整數存儲在數組中的相應位置。我的問題是我不知道如何區分兩者。當我打印出存儲在這個分配的數組空間中的數據時,它只顯示二進制數據的Ascii值作爲一串字符。 例如,如果我有二進制數0000 0001,位置[0] - [7]中的數組將是每個二進制數中每個位的ascii值。C二進制文件與ascii文件
基本上我試圖讀取每一行並存儲該行二進制信息在一個數組位置的int表示,所以像上面的例子所期望的結果是: [0] - 1.是否存在一些轉換算法I需要做?我相信有一種方法可以讓C識別它的二進制信息,而不是ascii,因爲有2種不同的文件類型:二進制和ASCII。任何幫助將不勝感激,提前致謝!
詩我只能使用這些函數調用:打開,關閉,讀,malloc的,FSTAT,printf的
else
{
fileDescriptor = open(argv[1], O_RDONLY, 0);
if (fileDescriptor == -1){
printf("File Not Found\n");
exit(1);
}
else{
if (fstat(fileDescriptor, &fileStat) < 0){
printf("Trouble pulling statistics of file\n");
exit(1);
}
else
{
numBytes = fileStat.st_size;
filePointer = (char*) malloc(numBytes);
n = read(fileDescriptor, filePointer, (numBytes * sizeof(int)));
if(n < 0){
printf("Problem reading the file\n");
exit(1);
}
numerator = 0;
numCount = 0;
average = 0;
while(*filePointer != NULL)
{
numerator += *filePointer;
printf("data in array: %d\n", *filePointer);
filePointer++;
numCount++;
}
average = (double) numerator/(double) numCount;
printf("Average: %f\n", average);
printf("Total Numbers: %d\n", numCount);
}
}
你說你有一個二進制文件,但然後說說從文件中讀取行。 「行」是一個文本概念,二進制文件沒有行,只有二進制數據。您正在使用不區分文本和二進制文件的POSIX(打開/讀取)文件功能 - 文件只是一系列字節,您可以將這些字節視爲二進制或ASCII文本或UTF-8文字或其他。 – 2015-02-08 07:32:19
好吧,這有助於很多。我只是困惑,那麼我應該如何通過我的filePointer變量指向的數組來獲取相關信息。我打印出來,每個位置的數據仍然只是每個位的ASCII值,當我想要整數表示。在這種情況下,訪問每個位置的整數來計算平均值。 filePointer是一個指向char類型的指針嗎? – RunFranks525 2015-02-08 07:48:17
你做了很多不必要的其他縮進,這使得代碼不易讀。請注意,在所有if語句中,如果條件爲真,則返回或退出,因此else {是不必要的。 – 2015-02-08 12:03:45