亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 解析gets、fgtes、scanf三者的區別

解析gets、fgtes、scanf三者的區別 時間:2018-09-27      來源:未知

三者都可以從標準輸入讀取字符,但是使用容易混淆

本文引用地址://m.gxqdgs.com/emb/Column/7272.html

可以用下面程序進行驗證:

#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是從標準輸入讀入一行,遇到換行符停止并且把換行符替換為'\0';

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

ab

len = 2

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

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

fgets也是從標準輸入讀入一行,但是它會保留換行符然后在換行符后邊加入'\0';

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

ab

len = 3

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

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

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

例如對于gets,輸入“a b”輸出如下:

a b

len = 3

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

但是對于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遇到第一個空格就已經結束了第一次讀取,因為緩沖區還有一個b,所以第二次讀取立馬進行了。

上一篇:Meteor開發環境的搭建及簡單實用

下一篇:嵌入式Linux文件系統的介紹

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 欧美日韩一区二区三区视频在线观看 | yy6080久久 | a视频在线免费观看 | 国产一卡2卡3卡4卡网站免费 | 亚洲免费观看网站 | 免费的一级片网站 | 黄色免费在线 | 国产精品又黄又爽又色视频 | 国产大片91精品免费看3 | 中文字幕日本在线mv视频精品 | 日本高清色片 | 99re8热精品免费视频 | 日本免费看片网站 | 午夜亚洲国产成人不卡在线 | jizzjizzjizz中国 | 国产成人优优影院 | 国产人妖在线视频 | 人人干人人插 | 久久桃花| 老子影院午夜伦手机不卡无 | 亚洲国产视频网站 | 久久久一本波多野结衣 | 国产日韩视频在线 | 亚洲天堂影院在线观看 | 久久香蕉国产线看观看亚洲片 | 久久精品国产波多野结衣 | 久久亚洲综合 | 久久vs国产综合色大全 | 欧美交性又色又爽又黄 | 日本天堂在线播放 | 国产精品久久久亚洲 | 国产精品99re | 国产成人综合久久 | 国产日韩亚洲不卡高清在线观看 | 欧美在线视频免费看 | 久久免费播放 | 中文字幕日韩一区二区三区不卡 | 国产精品jizz视频 | 欧美激情亚洲精品日韩1区2区 | 免费一级特黄 欧美大片 | 亚洲第一久久 |