最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux系統(tǒng)下C語言gets函數(shù)出現(xiàn)警告問題的解決方法

 更新時(shí)間:2018年12月05日 10:26:46   投稿:daisy  
這篇文章主要給大家介紹了關(guān)于在Linux系統(tǒng)下C語言gets函數(shù)出現(xiàn)警告問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

發(fā)現(xiàn)問題

最近在Linux下編譯C語言,用到gets這個(gè)函數(shù),代碼如下:

#include <stdio.h>

#include <string.h>

#include <string.h>

void main(){

char s[100]; // 存放輸入的字符串

int i, j, n;

printf("輸入字符串:");

gets(s);

n=strlen(s);

for(i=0,j=n-1;i<j;i++,j--)

if(s[i]!=s[j]) break;

if(i>=j)

printf("是回文串\n");

else

printf("不是回文串\n");

}


但是出現(xiàn)如下警告,

[linuxidc@localhost linuxidc.com]$ gcc linuxidc.c -o linuxidc.com

linuxidc.c: 在函數(shù)‘main'中:

linuxidc.c:8:5: 警告:不建議使用‘gets'(聲明于 /usr/include/stdio.h:638) [-Wdeprecated-declarations]

gets(s);

^

/tmp/ccvwVatT.o:在函數(shù)‘main'中:

linuxidc.c:(.text+0x1f): 警告:the `gets' function is dangerous and should not be used.


問題解決

原因就在于,gets不會(huì)去檢查字符串的長(zhǎng)度,如果字符串過長(zhǎng)就會(huì)導(dǎo)致溢出。如果溢出的字符覆蓋了其他一些重要數(shù)據(jù)就會(huì)導(dǎo)致不可預(yù)測(cè)的后果。在man手冊(cè)里也有關(guān)于gets這樣的警告:

Never use gets().  Because it is impossible to tell without knowing the data in advance how many  characters  gets()  will  read,  and  because gets() will continue to store characters past the end of the buffer, it is extremely dangerous to use.  It has  been  used  to  break  computer security.

可以用scanf的掃描集來實(shí)現(xiàn)這一功能,只要在方括號(hào)中寫入“^\n”,即:直到輸入了回車才停止掃描。下面來演示這一用法:

#include <stdio.h>

#include <string.h>

#include <string.h>

void main(){

char s[100]; // 存放輸入的字符串

int i, j, n;

printf("輸入字符串:");

scanf("%[^\n]",s); //改成這個(gè)就OK

n=strlen(s);

for(i=0,j=n-1;i<j;i++,j--)

if(s[i]!=s[j]) break;

if(i>=j)

printf("是回文串\n");

else

printf("不是回文串\n");

}


OK,問題解決。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

正安县| 和静县| 久治县| 宜阳县| 广东省| 聂拉木县| 太谷县| 鄂托克旗| 海林市| 故城县| 交口县| 乌恰县| 阜康市| 墨玉县| 池州市| 会泽县| 咸丰县| 东山县| 元江| 平昌县| 嘉祥县| 泗洪县| 紫阳县| 石台县| 佳木斯市| 洛浦县| 广德县| 永兴县| 昭苏县| 女性| 临颍县| 淳化县| 文化| 彭山县| 平昌县| 嘉黎县| 凤城市| 政和县| 石台县| 义马市| 磐安县|