gogo专业大尺度亚洲高清人体,美女张开双腿让男生桶,亚洲av无码一区二区三区鸳鸯影院,久久久久国产精品人妻

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 解析gets、fgtes、scanf三者的區(qū)別

解析gets、fgtes、scanf三者的區(qū)別 時(shí)間:2018-09-27      來源:未知

三者都可以從標(biāo)準(zhǔn)輸入讀取字符,但是使用容易混淆

本文引用地址://www.gengweng.cn/emb/Column/7272.html

可以用下面程序進(jìn)行驗(yàn)證:

#include

#include

#define N 10

int main(int argc, char *argv[])

{

int i;

char buf[N];

for(i=0 ;i

buf[i] = 0x11;

}

while (1) {

gets(buf);

// scanf("%s", buf);

// fgets(buf, N, stdin);

printf("len = %d\n", strlen(buf));

for(i=0 ;i

printf("0x%x ", buf[i]);

}

printf("\n\n");

}

return 0;

}

gets是從標(biāo)準(zhǔn)輸入讀入一行,遇到換行符停止并且把換行符替換為'\0';

上面程序如果輸入'ab'并敲入回車結(jié)束,那么打印結(jié)果為:

ab

len = 2

0x61 0x62 0x0 0x11 0x11 0x11 0x11 0x11 0x11 0x11

由此可見后的換行被替換為'\0'字符,所以strlen輸出為2

fgets也是從標(biāo)準(zhǔn)輸入讀入一行,但是它會(huì)保留換行符然后在換行符后邊加入'\0';

上面程序使用fgets,輸入'ab'并敲入回車結(jié)束,那么打印結(jié)果為:

ab

len = 3

0x61 0x62 0xa 0x0 0x11 0x11 0x11 0x11 0x11 0x11

0xa是換行符的ascii碼值,由此可見后的換行被保留了,所以strlen輸出為3

scanf和gets很像,但是它以空格或者換行為結(jié)束

例如對(duì)于gets,輸入“a b”輸出如下:

a b

len = 3

0x61 0x20 0x62 0x0 0x11 0x11 0x11 0x11 0x11 0x11

但是對(duì)于scanf輸入如下:

a b

len = 1

0x61 0x0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11

len = 1

0x62 0x0 0x11 0x11 0x11 0x11 0x11 0x11 0x11 0x11

由此可見,scanf遇到第一個(gè)空格就已經(jīng)結(jié)束了第一次讀取,因?yàn)榫彌_區(qū)還有一個(gè)b,所以第二次讀取立馬進(jìn)行了。

上一篇:Meteor開發(fā)環(huán)境的搭建及簡(jiǎn)單實(shí)用

下一篇:嵌入式Linux文件系統(tǒng)的介紹

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部