fread(n,4,1,fp); //這個是對的,但要在32位環(huán)境下,通用的方式可以這樣
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了甘谷免費建站歡迎大家使用!
fread(n,sizeof(n), 1, fp);
fprintf(fp,"%d",n);(這里要不要地址符呀)
不要
如果是數(shù)組char str[20]:
fread(str,4,1,fp); //如果你想保存數(shù)組內(nèi)容,應(yīng)該這樣
fread(str, sizeof(str), 1, fp); //sizeof(str) = 20;
在fscanf和fprintf 針對數(shù)組都不用
一、指代不同
1、scanf:是C語言中的一個輸入函數(shù)。
2、gets:從標(biāo)準(zhǔn)輸入設(shè)備讀字符串函數(shù)。
二、讀取方式不同
1、scanf:是格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。
2、gets:可以無限讀取,不會判斷上限,以回車結(jié)束讀取,所以程序員應(yīng)該確保buffer的空間足夠大,以便在執(zhí)行讀操作時不發(fā)生溢出。
三、數(shù)據(jù)流向不同
1、scanf:函數(shù) scanf() 是從標(biāo)準(zhǔn)輸入流stdin? (標(biāo)準(zhǔn)輸入設(shè)備,指向鍵盤)中讀內(nèi)容的通用子程序,可以說明的格式讀入多個字符,并保存在對應(yīng)地址的變量中。
2、gets:從stdin流中讀取字符串,直至接受到換行符或EOF時停止,并將讀取的結(jié)果存放在buffer指針?biāo)赶虻淖址麛?shù)組中。換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為‘\0’空字符,并由此來結(jié)束字符串。
參考資料來源:百度百科-gets
參考資料來源:百度百科-scanf
一個數(shù)字以響應(yīng)的話就是這樣:還是用strcmp函數(shù),要一個一個對比就不需要passcheck[]數(shù)組的
#include string.h
#include stdio.h
char key();
int pass(unsigned char);
int main ()
{
unsigned char password[]={7,4,5,6}; //用于存儲設(shè)置好的密碼
if (pass(password) == 1)
printf("ok!");
else
printf("failer");
return;
}
char key() //接收輸入一個一個的比。因為輸入是緩沖輸入,所以必須回車才會響應(yīng)
{
char p;
scanf("%c",p);
return c;
}
int pass(unsigned char password[])
{
char c;
for(int i = 0; i 5; i++)
{
c = key();
if(password[i] != c) return 0; //輸入一個錯誤就提示錯誤退出。
}
return 1;
}
C語言中,首先有個主函數(shù),即入口函數(shù),函數(shù)名為main,也就是
所有程序的執(zhí)行都是從main函數(shù)開始的。
然后就是兩類函數(shù),一類是庫函數(shù),這些函數(shù)是編譯器自帶的,
不同的函數(shù)有不同的功能,你可以再編寫程序的時候去調(diào)用它們,
只要在程序中用#include 相應(yīng)的頭文件就可以。再有一類函數(shù)
是自定義函數(shù),這類函數(shù)的功能是看程序員具體是怎么編寫的。
你一般只需要記住常用的庫函數(shù)就可以,例如printf,別的用到
的可以去查看具體怎么調(diào)用。
宏定義是C提供的三種預(yù)處理功能的其中一種,這三種預(yù)處理包括:宏定義、文件包含、條件編譯
宏定義又稱為宏代換、宏替換,簡稱“宏”。
格式:
#define 標(biāo)識符 字符串
其中的標(biāo)識符就是所謂的符號常量,也稱為“宏名”。
預(yù)處理(預(yù)編譯)工作也叫做宏展開:將宏名替換為字符串。
掌握"宏"概念的關(guān)鍵是“換”。一切以換為前提、做任何事情之前先要換,準(zhǔn)確理解之前就要“換”。
即在對相關(guān)命令或語句的含義和功能作具體分析之前就要換:
例:
#define PI 3.1415926
把程序中出現(xiàn)的PI全部換成3.1415926
c語言函數(shù)和其他語言函數(shù)是不同的,是相互獨立的。
希望對你有幫助。
在C語言中,文件操作都是由庫函數(shù)來完成的。
要讀取一個txt文件,首先要使用文件打開函數(shù)fopen()。
fopen函數(shù)用來打開一個文件,其調(diào)用的一般形式為: 文件指針名=fopen(文件名,使用文件方式) 其中,“文件指針名”必須是被說明為FILE 類型的指針變量,“文件名”是被打開文件的文件名。 “使用文件方式”是指文件的類型和操作要求。“文件名”是字符串常量或字符串?dāng)?shù)組。
其次,使用文件讀寫函數(shù)讀取文件。
在C語言中提供了多種文件讀寫的函數(shù):
·字符讀寫函數(shù) :fgetc和fputc
·字符串讀寫函數(shù):fgets和fputs
·數(shù)據(jù)塊讀寫函數(shù):freed和fwrite
·格式化讀寫函數(shù):fscanf和fprinf
最后,在文件讀取結(jié)束要使用文件關(guān)閉函數(shù)fclose()關(guān)閉文件。
下面以格式化讀寫函數(shù)fscanf和fprintf為例,實現(xiàn)對文件A.txt(各項信息以空格分割)的讀取,并將它的信息以新的格式(用制表符分割各項信息)寫入B.txt,實現(xiàn)對A.txt的處理。
C語言源程序如下所示:
#include stdio.h
#include stdlib.h
#include assert.h
typedef struct student{
char name[32];
int no;
char sex[16];
float score;
} stu;
int main(int argc, char* argv[])
{
//打開文件
FILE * r=fopen("A.txt","r");
assert(r!=NULL);
FILE * w=fopen("B.txt","w");
assert(w!=NULL);
//讀寫文件
stu a[128];
int i=0;
while(fscanf(r,"%s%d%s%f",a[i].name,a[i].no,a[i].sex,a[i].score)!=EOF)
{
printf("%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//輸出到顯示器屏幕
fprintf(w,"%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//輸出到文件B.txt
i++;
}
//關(guān)閉文件
fclose(r);
fclose(w);
system("pause");
return 0;
}
第一個函數(shù)是交換了兩個指針量所指向的值。第二個函數(shù)是直接交換了兩個指針變量。