1樓:匿名使用者
#include
#include
int main()
b=(int*)calloc(j,sizeof(int));//分配一維陣列儲存
rewind(fp1);
for(i=0;i
2樓:匿名使用者
1.fopen函式開啟需要讀取的文字,獲取該檔案的檔案描述符2.使用fscan()函式對檔案進行讀取。
3.放到二維陣列其實就是讀取相應格式的資料,然後對應陣列的每個位置4.檔案中的二進位制資料跟正常的資料是沒有區別的。區別在於如何去輸出他們。
比如在檔案中二進位制資料是 0x0a.你讀到記憶體中其實還是以0x0a 儲存的。如果直接輸出
其值那就是0x0a。如果輸出其ascii碼就是一個換行符了。
例如#include "stdio.h"
#define m 300
#define n 50
void main()
fscanf(fp,"%c",&c);
printf("%x,%c",c,c);
fclose(fp);}
3樓:匿名使用者
/***我不能把整個函式給你編出來,但我這有我實現的將byte->bit , bit->byte的函式,有註解,希望能幫助你。有了這個應該就差不多了***/
位元組流轉為位流:
原理:工作中會遇到將位元組流轉為位流的情況;
位元組流到位流:
unsigned char a = "0123456789abcdef";
unsigned char 意味著 1. 任意16進位制數ru 0xab , 0x45...;
2.任意小於255的十進位制整數(8位),
將位元組轉為位時 如『a』,a = 97 , 則97對應十六進位制數0x01100001 , 每一次將0x01100001右移一位與0x01相與得到每一位的值,存取時
用書組bit[i*max(8) + max - 1 - j]儲存;**實現如下:
void byte_to_bit(const unsigned *byte , int& bytenum , unsigned *bit , int *bitnum)
}*bitnum = counter;
}位流到位元組流:
原理0xff對應的十進位制數值為0x11111111與 int jishu = {128 , 64 , 32 , 16 , 8 , 4 , 2 , 1}對應位相乘相加變得到其值, 或
**實現(1):
void bit_to_byte(const unsigned char * bit , int bitnum , unsigned char *byte , int *bytenum)
*bytenum = bitnum / max;b
}**實現(二):
void bit_to_byte(const unsigned char * bit , int bitnum , unsigned char *byte , int *bytenum)
byte[bnum] = uchtmp;
bnum++;
uchtmp = 0;
}*bytenum = bnum
}函式測試**:
void test_byte_bit()
關於c語言二進位制檔案的問題,怎樣實現將一個**以二進位制的方式存入陣列中,然後又可以寫入檔案中???
4樓:匿名使用者
#include
#include
int main(); //陣列的大小,改成足夠大的fread( str , 1,3,fp);
fclose(fp);
return 0;}
5樓:匿名使用者
這個問題不太清楚,不過檔案的最終儲存方式都是二進位制的資料流,所以你得先把**轉化為二進位制的檔案,那就得用匯編了,得到二進位制檔案後程式就好寫了,在你寫入檔案後要得到**還得在用匯編讓它轉化問**格式。具體怎麼轉化不清楚,c語言裡或許有相應的函式庫。
在c語言中,可以把整型數以二進位制形式存放到檔案中的函式是什麼?
6樓:跳出海的魚
fwrite函式
【補充】:
功功能:
c語言函式,向檔案寫入一個資料塊
2用法:
size_t fwrite(const void* buffer, size_t size, size_t count, file* stream);
注意:這個函式以二進位制形式對檔案進行操作,不侷限於文字檔案
返回值:返回實際寫入的資料塊數目
(1)buffer:是一個指標,對fwrite來說,是要獲取資料的地址;
(2)size:要寫入內容的單位元組數;
(3)count:要進行寫入size位元組的資料項的個數;
(4)stream:目標檔案指標;
(5)返回實際寫入的資料項個數count。
說明:寫入到檔案的**? 這個與檔案的開啟模式有關,如果是w+,則是從file pointer指向的地址開始寫,替換掉之後的內容,檔案的長度可以不變,stream的位置移動count個數;如果是a+,則從檔案的末尾開始新增,檔案長度加大。
fseek對此函式有作用,但是fwrite[1] 函式寫到使用者空間緩衝區,並未同步到檔案中,所以修改後要將記憶體與檔案同步可以用fflush(file *fp)函式同步。
7樓:匿名使用者
就是fwrite(); fprintf 就已經不是二進位制數了,是字元型了。
8樓:匿名使用者
fwrite是二進位制吧,fprintf應該不是二進位制型別儲存
c語言問題:輸入一個十進位制數,將其轉化為二進位制數後存放在陣列中並輸出
9樓:凌亂心扉
#include
#define uint unsigned int
#define ushort unsigned short
//求2的n次方
int cifang(int n)
return sum;
}//十進位制
正數轉換成二進位制數
uint transform_data_zhengshu(uint frequence,ushort*pwm_table)
return pwm_index-1;
}uint transform_data(int frequence,ushort*pwm_table)
;//負數
if(frequence<0)
//將轉換出來的十進位制數sum加一
sum+=1;
//printf("sum=%d\n",sum);
//最後再轉成二進位制pwm_table
return transform_data_zhengshu(sum,pwm_table);
}//正數
return transform_data_zhengshu(frequence,pwm_table);
}int main();
uint off_set;
off_set=transform_data(frequence,pwm_table);
int i=0;
for(i=off_set;i>=0;i--)
return 0;}
10樓:匿名使用者
源程式如下:#include
void main()
printf("十進位制整數%d轉換為二進位制數是:\n",y);
for(i--;i>=0;i--)
printf("%d",a[i]);//通過陣列輸出printf("\n");
}vc++測試如下:
11樓:匿名使用者
#include
void fun(int n)
for(i = i-1; i >= 0; i--)printf("\n");
}int main()
c語言中如何將一個十進位制整數以二進位制形式輸出
12樓:
#include "stdio.h"
#include
#include
void main()
c語言中使用fread,fwrite函式為什麼一般以二進位制方式開啟檔案,能舉例說明最好 5
13樓:匿名使用者
因為計算機所有的東西都是用二進位制儲存的 比如int儲存4個位元組 char1個位元組
而文字型別的本質就是char*型別 也就是char陣列 , 如果你按本文儲存的話 int型別就要轉化成文字型別 比如123456789 本來只要4位元組儲存 如果轉成文字儲存就是9位元組
而且讀取123456789後要轉化成int型別後才能進行加減乘除各種運算
怎麼解釋呢 不知道你聽懂了沒
簡單的說文字型別本質就是char陣列 用他儲存其他型別對計算機來說很麻煩 所以用二進位制儲存
對人類而言 文字比較方便
對計算機而言 二進位制比較方便
14樓:
可能會丟失精度,1.0/3的結果用文字存和二進位制存,再次讀取出來的結果會不一樣。二進位制還能存陣列,結構一類的資料。
15樓:
因為fread和fwrite是按資料塊的長度來處理輸入輸出的,在字元發生轉換的情況下很可能出現與原設想的情況不同的結果。
詳細參見《c語言程式設計(第2版)》譚浩強 清華大學出版社 p317-p321
c語言中採用二進位制檔案儲存資料的問題
16樓:投機士
在磁碟的儲存上都是二進位制儲存這點上都一樣。
從檔案編碼的方式來看,檔案可分為ascii碼檔案和二進位制碼檔案兩種。
ascii檔案也稱為文字檔案,這種檔案在磁碟中存放時每個字元對應一個位元組,用於存放對應的ascii碼。例如,數5678的儲存形式為:
asc碼: 00110101 00110110 00110111 00111000
↓ ↓ ↓ ↓
十進位制碼: 5 6 7 8 共佔用4個位元組。ascii碼檔案可在螢幕上按字元顯示, 例如源程式檔案就是ascii檔案,用dos命令type可顯示檔案的內容。
由於是按字元顯示,因此能讀懂檔案內容。
二進位制檔案是按二進位制的編碼方式來存放檔案的。 例如, 數5678的儲存形式為: 00010110 00101110只佔2個位元組。
二進位制檔案雖然也可在螢幕上顯示, 但其內容無法讀懂。
流可以分為兩種型別:文字流和二進位制流。文字流是解釋性的,最長可達255個字元,其中回車/換行將被轉換為換行符「/n」,(如果以"文字"方式開啟一個檔案,那麼在讀字元的時候,系統會把所有的"/r/n"序列轉成"/n",在寫入時把"/n"轉成"/r/n" archim 's opinion )。
二進位制流是非解釋性的,一次處理一個字元,並且不轉換字元。
通常,文字流用來讀寫標準的文字檔案,或者將字元輸出到螢幕或印表機,或者接受鍵盤的輸入;而二進位制流用來讀寫二進位制檔案(例如圖形或字處理文件),或者讀取滑鼠輸入,或者讀寫調變解調器。
如果用文字方式開啟檔案,會把「0d 0a」自動變換成「/n」來存在記憶體中。寫入的時候反向處理。 而二進位制方式開啟的話,就不會有這個過程。
所以從上面可以看出:文字檔案佔磁碟空間大,讀取速度比較慢,但開啟後容易理解;二進位制檔案佔磁碟空間小,讀取速度快,如果要理解檔案檔案的意思需要自己進行解釋。
C語言如何表示二進位制?C語言如何定義二進位制變數?
c語言中二進位制的表示方法。c語言中沒有二進位制的格式輸出符號。你可以用itoa函式很方便的將一個10進位制int轉變成二進位制字串。如 inti chars 128 scanf d i itoa i,s,2 3個引數,第一個是待轉換的數,第二個是存放轉換後的字串,第三個即需要轉換的進位制 prin...
C語言用指標編寫函式,將二進位制數(以字串形式表示)轉換為十進位制數。請給出運算結果
include stdio.h double bintodec char str return x int main int argc,char argv 執行樣例 c語言 將一個十進位制的正整數轉換為二進位制數並輸出結果。十進位制整數轉換為二進位制整數採用 除2取餘,逆序排列 法。具體做法是 用2...
用c語言程式設計,實現十進位制和二進位制的相互轉化
include int getnumber char s,int n return k else return 0 void exchange char s,int n,int k for i 0 ivoid main include int main printf 二進位制為 i for i 0 ...