日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 技術學院 > 電子技術資源
[導讀]首先說明,Windows系統(tǒng)對'\n'的處理結果為”回車換行”,相當于Linux中的'\r', '\n'兩個字符

首先說明,Windows系統(tǒng)對'\n'的處理結果為”回車換行”,相當于Linux中的'\r', '\n'兩個字符

一、標準輸出函數(shù)

1. printf()

printf()的常用格式化有:%d, %f, %c, %s, %p, %x, %X, %%

%p與%x / %X的區(qū)別:%p格式化需要void*類型的參數(shù),而%x / %X需要unsigned int類型的參數(shù),也就是說%p用于以16進制打印地址(指針),%x / %X用于以16進制打印數(shù)值(非指針),%p, %x / %X打印結果均無前導0x / 0X,%p打印結果有前導0而%x / %X沒有前導0

%s:對應參數(shù)為字符指針,可以輸出對應的字符串,識別到'\0'時結束,不會添加‘\n'

傳入printf()中的某格式控制符與參數(shù)列表中的對應參數(shù)類型不匹配時,將以該格式輸出0

2.putchar()

使用putchar()輸出變量時,傳入變量名即可

使用putchar()輸出常量時,傳入該字符的ASCII碼或以格式‘/*單個字符常量*/’傳入?yún)?shù)均可

以下使用方式是錯誤的:

以“/*字符串*/”格式傳入字符串將打印一個?

以‘/*多個字符常量*/'格式傳入多個字符串將打印最后一個字符

#include

int main(void)

{

char a = 35;

//輸出#

putchar(a);

//輸出a

putchar('a');

//輸出?

putchar("a");

//輸出#

putchar(35);

//輸出5

putchar('35');

//輸出?

putchar("35");

return 0;

}

3.puts()

首先說明:C編譯器為字符串分配內存時,會在若干字符末尾后綴一個’\0'結束符,所以在未知字符串長度時,所有字符串處理函數(shù)都以識別到'\0'作為字符串結束標志,在未知字符串長度的情況下使用字符串處理函數(shù)處理任何沒有'\0'的字符串將導致非法內存訪問(數(shù)組越界),輕則輸出亂碼,重則程序異常終止

//逐個字符為字符數(shù)組賦值時必須手動加'\0'

char string[6] = { 'h', 'e', 'l', 'l', 'o', '\0' };//合法

char string[ ] = { 'h', 'e', 'l', 'l', 'o', '\0' };//合法

char string[5] = { 'h', 'e', 'l', 'l', 'o' };//非法

char string[ ] = { 'h', 'e', 'l', 'l', 'o' };//非法

//以字符串為字符數(shù)組賦值時編譯器將自動加'\0'

char string[ ] = { "hello" };//合法

char string[ ] = "hello";//合法

//字符數(shù)組實際長度為 字符總數(shù) + 1

char string[6] = "hello"http://合法

char string[5] = "hello"http://編譯器將報錯

使用puts()時,傳入字符指針可以輸出對應的字符串,識別到'\0'時結束,并輸出一個'\n'

二、標準輸入函數(shù)

1.scanf()

首先說明:輸入緩沖區(qū)(stdin)是內存中的一個隊列(FIFO),有先入先出的性質,可以使用多種方法清空輸入緩沖區(qū)

//定義在stdio.h中,用于清空輸入緩沖

fflush(stdin);

//定義在stdio.h中,用于清空輸入緩沖

rewind(stdin);

//該方法在以敲回車作為輸入結束標志時可以使用

while (getchar() != '\n');

scanf()從內存中的輸入緩沖區(qū)中讀取數(shù)據(jù),若讀取正常,未被讀取完的數(shù)據(jù)將繼續(xù)留在輸入緩沖區(qū),若讀取異常,輸入緩沖區(qū)將被清空

函數(shù)返回值為實際讀取成功的變量個數(shù),一個都沒成功會返回EOF值(在stdio.h中define為-1)

%c:會把包括空白符,控制符在內的所有內容都讀走

%s:使用%s輸入字符串時遇到空白符即停止,空白符會留在輸入緩沖區(qū)

PS:scanf()格式化中的若干細節(jié)

1)當格式控制符之間緊鄰時,以空格或tab鍵作為輸入變量時的分隔

2)當scanf()引號內開頭有空白字符時,將跳過輸入緩沖區(qū)開頭的若干空白符

3)當scanf()引號中任意位置有非空白字符時,緩沖區(qū)中數(shù)據(jù)必須與之匹配

4)當scanf()引號內非開頭位置有空白符時,緩沖區(qū)中數(shù)據(jù)必須與之匹配

5)不要在scanf()引號內末尾添加字符,否則讀取完成還會繼續(xù)向后匹配,不但沒什么作用(格式控制字符串中內容比stdin中多或匹配失敗均會結束調用并清空stdin,stdin中內容比格式控制字符串中多會結束調用但保留stdin中多余內容),萬一字符串被掃描到末尾的同時stdin剛好為空還會導致死循環(huán)

2.getchar()

getchar()不需要參數(shù),返回值即為輸入的字符

3.gets()

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關閉