C語言輸入輸出函數(shù)有很多,標(biāo)準(zhǔn)I/O函數(shù)中包含了如下幾個常用的函數(shù):
在紹興等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作按需網(wǎng)站設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,全網(wǎng)整合營銷推廣,外貿(mào)網(wǎng)站制作,紹興網(wǎng)站建設(shè)費(fèi)用合理。
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int
getc(FILE
*fp)
getc主要是從文件中讀出一個字符.常用的判斷文件是否讀取結(jié)束的語句為
(ch
=
getc(fp))
!=
EOF.EOF為文件結(jié)束標(biāo)志,定義在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定義在stdlib.h中一樣,文件也可以被理解為一種流,所以當(dāng)fp為stdin時,getc(stdin)就等同于getchar()了.
int
putc(int
ch,FILE
*fp)
putc主要是把字符ch寫到文件fp中去.如果fp為stdout,則putc就等同于putchar()了.
int
getchar(void)
getchar主要是從標(biāo)準(zhǔn)輸入流讀取一個字符.默認(rèn)的標(biāo)準(zhǔn)輸入流即stdio.h中定義的stdin.但是從輸入流中讀取字符時又涉及到緩沖的問題,所以并不是在屏幕中敲上一個字符程序就會運(yùn)行,一般是通過在屏幕上敲上回車鍵,然后將回車前的字符串放在緩沖區(qū)中,getchar就是在緩沖區(qū)中一個一個的讀字符.當(dāng)然也可以在while循環(huán)中指定終止字符,如下面的語句:while
((c
=
getchar())
!=
'#')這是以#來結(jié)束的.
int
putchar(int
ch)
putchar(ch)主要是把字符ch寫到標(biāo)準(zhǔn)流stdout中去.
char
*
gets(char
*str)
gets主要是從標(biāo)準(zhǔn)輸入流讀取字符串并回顯,讀到換行符時退出,并會將換行符省去.
int
puts(char
*str)
puts主要是把字符串str寫到標(biāo)準(zhǔn)流stdout中去,并會在輸出到最后時添加一個換行符.
char
*fgets(char
*str,
int
num,
FILE
*fp)
str是存放讀入的字符數(shù)組指針,num是最大允許的讀入字符數(shù),fp是文件指針.fgets的功能是讀一行字符,該行的字符數(shù)不大于num-1.因為fgets函數(shù)會在末尾加上一個空字符以構(gòu)成一個字符串.另外fgets在讀取到換行符后不會將其省略.
int
fputs(char
*str,
file
*fp)
fputs將str寫入fp.fputs與puts的不同之處是fputs在打印時并不添加換行符.
int
fgetc(FILE
*fp)
fgetc從fp的當(dāng)前位置讀取一個字符.
int
fputc(int
ch,
file
*fp)
fputc是將ch寫入fp當(dāng)前指定位置.
int
fscanf(FILE
*fp,
char
*format,
輸入列表)
fscanf按照指定格式從文件中出讀出數(shù)據(jù),并賦值到參數(shù)列表中.
int
fprintf(FILE
*fp,
char
*format,
輸出列表)
fprintf將格式化數(shù)據(jù)寫入流式文件中.
數(shù)據(jù)塊讀寫函數(shù)
fread
(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
參數(shù)說明:
buffer:是一個指針。
對fread
來說,它是讀入數(shù)據(jù)的存放地址。
對fwrite來說,是要輸出數(shù)據(jù)的地址(均指起始地址)。
size:
要讀寫的字節(jié)數(shù)。
count:
要進(jìn)行讀寫多少個size字節(jié)的數(shù)據(jù)項。
fp:
文件型指針。
main函數(shù)——主函數(shù);
printf函數(shù)——格式輸出函數(shù);
scanf函數(shù)——格式輸入函數(shù);
getchar函數(shù)——字符輸入函數(shù);
putchar函數(shù)——字符輸出函數(shù);
gets函數(shù)——字符串輸入函數(shù);
puts函數(shù)——字符串輸出函數(shù);
strlen函數(shù)——求字符串長度的函數(shù);
strcmp函數(shù)——比較字符串的函數(shù);
sqrt函數(shù)——求開平方值的函數(shù)。
你說要十個的,所以我就寫了十個?。∵@些,本人認(rèn)為都是基礎(chǔ)的函數(shù)?。?/p>
函數(shù)式宏(function-like macro)較之對象式宏可以進(jìn)行更復(fù)雜的代換。
函數(shù)式宏 sqr 是在編譯時展開并填入程序的,因此 只要是能用雙目運(yùn)算符 * 進(jìn)行乘法計算的數(shù)據(jù)類型,都能使用函數(shù)式宏 。
函數(shù)定義則需為每個形參都定義各自的數(shù)據(jù)類型,返回值的類型也只能為一種。就這點而言,函數(shù)較為嚴(yán)格。
函數(shù)為我們默默無聞地進(jìn)行了一些復(fù)雜處理,如:
而函數(shù)式宏所做的工作只是宏展開和填入程序,并不進(jìn)行上述處理。
根據(jù)以上特征, 函數(shù)式宏或許能使程序的運(yùn)行速度稍微提高一點,但是程序自身卻有可能變得臃腫 。
函數(shù)式宏在使用上必須小心謹(jǐn)慎。例如, sqr(a++) 展開后 ((a++) * (a++)) 。每次展開, a 的值都會自增兩次。在不經(jīng)意間表達(dá)式被執(zhí)行了兩次,導(dǎo)致程序出現(xiàn)預(yù)料之外的結(jié)果,我們稱這種情況為宏的 副作用(side effect) 。
if語句的一般形式如下:
if(表達(dá)式)語句1
[else語句2]
if語句中的“表達(dá)式”可以是關(guān)系表達(dá)式、邏輯表達(dá)式,甚至是數(shù)值表達(dá)式。其中最直觀、最容易理解的是關(guān)系表達(dá)式。所謂關(guān)系表達(dá)式就是兩個數(shù)值進(jìn)行比較的式子。
例如:
if(xy)
printf("%d",x);
else
printf("%d",y);
擴(kuò)展資料
if-else語句引入了一種二義性問題稱為空懸else(dangling-else)問題,這種問題出現(xiàn)在當(dāng)if子句多于else子句時。問題是這些else子句分別和哪一個if子句匹配。
例如:
if(minVal=ivec[i])
if(minVal==ivec[i])
++occurs;
else
{
minVal=ivec[i];
occurs=1;
}