色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

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

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

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

本文引用地址://www.17old.cn/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號

回到頂部

色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 国产精品wwwwww| 亚洲欧美国内爽妇网| 亚洲第一免费播放区| 久久精品99国产精品酒店日本 | 久久久久久久激情视频| 国产精品啪视频| 色爱av美腿丝袜综合粉嫩av | 欧美极品少妇xxxxⅹ免费视频 | 国产欧美日韩专区发布| 深夜成人在线观看| 国产精品一区二区3区| 免费av在线一区| 欧美性受xxx| 91产国在线观看动作片喷水| 成人久久久久爱| 欧美一区二粉嫩精品国产一线天| 亚洲精品xxx| 成人性生交大片免费看小说| 欧美成人精品在线观看| 国产日韩欧美视频| 久久人91精品久久久久久不卡 | 国产成人一区二区三区小说| 精品国产网站地址| 亚洲国产欧美自拍| 成人国产精品一区| 国产精品免费视频久久久| 欧美激情精品久久久久久变态| 日韩最新在线视频| 中文字幕不卡av| 久久精品成人动漫| 一本色道久久88综合亚洲精品ⅰ| 国产在线a不卡| 亚洲第一黄色网| 亚洲黄色av女优在线观看| 91在线无精精品一区二区| 亚洲国产99精品国自产| 亚洲a级在线播放观看| 亚洲精品乱码久久久久久金桔影视 | 97精品免费视频| 国模精品一区二区三区色天香| 欧美日韩在线免费观看|