1. C語言文件保存成二進制
1、使用fopen函數打開的時候,使用"wb"模式就可以保存二進制保存文件。
fopen的函數原型:FILE * fopen(const char * path,const char * mode);
fopen函數的第一個參數是文件路徑,第二個參數是打開方式,有以下幾種方式:
r 以只讀方式打開文件,該文件必須存在。
r+ 以可讀寫方式打開文件,該文件必須存在。
rb+ 讀寫打開一個二進制文件,允許讀數據。
rw+ 讀寫打開一個文本文件,允許讀和寫。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。 (原來的EOF符不保留)
wb 只寫打開或新建一個二進制文件;只允許寫數據。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
at+ 讀寫打開一個文本文件,允許讀或在文本末追加數據。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數據。
上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。
返回值:文件順利打開後,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,並把錯誤代碼存在errno中。
2、例子:
FILE*in,*out;
in=fopen("c:\p.png","rb");
out=fopen("c:\out.txt","wb");
chars[255]={0};
while(!feof(in))
{
intc=fgetc(in);
sprintf(s,"0x%x",c);
fputs(s,out);
}
return0;
2. 如何把VS2010寫的程序(含.CPP)打包進一個二進制的EXE內
編譯生成的.exe文件就是你想要的啊
3. cpp變成二進制怎麼辦
cpp怎麼會變成二進制?說詳細點 ,
那就說明沒有恢復成功,cpp是ascii文件,如果不能顯示出字元,說明原來的數據已經被覆蓋寫過了,神仙也就不了你了。
4. 如何用c語言/cpp 編譯二進制補碼和二進制轉換程序
如果給的是字元串的話先用這個程序轉換成整型
char ch[33];
int i;
int a = 0;
scanf("%s",ch);
printf("%s\n",ch);
for(i=0;i<32;i++)
{
a = a | ((ch[i]-'0')<<32-1-i);
}
printf("%d\n",a);
a就是轉換後的數
剩下的就一樣了
#include <stdio.h>
#include <string.h>
int main()
{
char ch[33];
int a;
int i,j;
int flag;
scanf("%d",&a);
if(a >= 0)
flag = 0;
else
{
flag = 1;
a*=-1;
}
for(i=0;a;i++)
{
if(a != a/2*2)
ch[i] = '1';
else
ch[i] = '0';
a/=2;
}
ch[i] = '\0';
i = strlen(ch);
if(flag)
putchar('1');
else
putchar('0');
for(j=0;j<31-i;j++)
putchar('0');
for(j=0;j<i;j++)
putchar(ch[i-1-j]);
putchar('\n');
return 0;
}
水平有限 實現的不怎麼優雅 不過基本實現了要求
別的編譯器沒有測試 在gcc下測試了幾組數據通過 如果有問題再留言
5. 請問cpp文件被編譯後的exe文件算是0101形式的二進制的文件嗎謝謝
目前為止,計算機上所有的文件都是0101的二進制文件。
6. cpp轉二進制沒有效果
二進制操作運算符只適用於整型數據。cpp是程序設計語言C++的另一種書寫形式,是繼C語言之後又一種計算機編程語言,二進制是在數學和數字電路中指以2為基數的記數系統,以2為基數代表系統是二進位制的,轉二進制沒有效果是二進制操作運算符只適用於整型數據。
7. C/C++語言編譯生產可執行的二進制文件的過程求大神詳盡解釋,
預編譯。編譯器將你的.c、.cpp源代碼,通過解釋其中的預編譯指令,將源代碼轉換成相應的沒有任何預編譯指令的代碼。
編譯、優化。將上一步的代碼編譯成匯編指令,並作一定優化,形成對應的.s匯編代碼
匯編。將.s文件匯編成機器碼,形成對應的.o目標文件,此時是不可執行的二進制文件。生成對應的清單文件。為了連接需要,還會生成未定向符號表、導出符號表、地址重定向表等等。
連接。先根據對應的清單文件、連接文件及之間的調用關系,決定所有的目標文件及引用的庫文件在最後可執行文件中的位置;然後做一些其他事情,比如根據符號表等將目標文件中的符號地址補全等等;最終得到可執行文件。
這只是我個人的簡單理解,更詳盡的解答都可以寫成好幾本書了=_=望採納~
8. VC由於IDE掛掉了,直接重啟電腦,起來後一個CPP文件變成二進制的了,無法打開。請問有沒有機會復原
我今天和你一樣的悲劇,幾千行代碼。。沒了,悲劇到家了。。氣死了
9. 如何將一個函數編譯成二進制文件
通過下面這條命令,main.c和swap.c 就產生了一個可執行二進制文件swap
》gcc mian.c swap.c -o swap
那麼這條命令是么樣把源程序變成可執行程序的呢?
步驟如下:
1、驅動程序首先調用C預處理器(CPP)把源文件翻譯成一個ASCII中間文件mian.i,預處理器會把#include所包含的內容都插入到聲明的位置,並且做宏替換,把main.c 文件的第3行 的SIZE替換成2(注意這里只是做簡單的文本替換)。
2、接下來驅動程序的C編譯器將main.i翻譯成匯編語言程序main.s
3、然後驅動程序的匯編器將匯編語言程序main.s 翻譯成可重定位的二進制文件main.o
4、最後運行鏈接器將main.o 與swap.o 以及一些必要的系統目標文件(比如你將調用的printf函數就是printf.o)連接起來變成一個可執行的二進制文件。
10. C語言怎麼定義一個二進制數
C語言中沒有 「二進制數」這種類型,所以沒辦法直接定義;但可以直接定義16進制數。
例:
int main(){
int a;
scanf("%p",&a);//16進制數輸入%p是輸入一個十六進制的數scanf("%llx",&a);也可以輸入十六進制並且比較正規
printf("%d",a);//十進制輸出%d是輸出一個十進制的數
printf("0x%x",a);//16進制輸出printf("%llX ",a);也可輸出一個十六進制數如果紅色部分大寫X則輸出十六進制為大寫字母否則小寫x輸出為小寫字母
}
(10)cpp庫編譯進二進制文件擴展閱讀
C語言中定義整型數據的十六進制數:
unsigned int hex_val = 0x123;
//定義了一個整型變數並賦以初始值為一個十六進制常量。
if (scanf("%x", &hex_val) != EOF)
{
printf("它的八、十進制分別=%o、%d ", hex_val, hex_val);
}