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

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

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

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

最近在Linux下編譯C語言,用到gets這個函數(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不會去檢查字符串的長度,如果字符串過長就會導致溢出。如果溢出的字符覆蓋了其他一些重要數(shù)據(jù)就會導致不可預測的后果。在man手冊里也有關(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的掃描集來實現(xiàn)這一功能,只要在方括號中寫入“^\n”,即:直到輸入了回車才停止掃描。下面來演示這一用法:

#include <stdio.h>

#include <string.h>

#include <string.h>

void main(){

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

int i, j, n;

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

scanf("%[^\n]",s); //改成這個就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é)

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

相關(guān)文章

  • C++ explicit關(guān)鍵字講解

    C++ explicit關(guān)鍵字講解

    這篇文章主要介紹了C++ explicit關(guān)鍵字講解,++提供了explicit關(guān)鍵字,相對于implicit而言,他默認關(guān)閉了隱式類型轉(zhuǎn)換方法。至于兩者有什么區(qū)別,看下面文章內(nèi)容的介紹吧
    2021-12-12
  • C/C++實現(xiàn)快速排序(兩種方式)圖文詳解

    C/C++實現(xiàn)快速排序(兩種方式)圖文詳解

    這篇文章主要介紹了C/C++實現(xiàn)快速排序的方法,這幾天在找工作,被問到快速排序,結(jié)果想不出來快速排序怎么弄的;回來搜索了一下,現(xiàn)在記錄下來,方便以后查看
    2021-08-08
  • C語言回調(diào)函數(shù)的簡單運用

    C語言回調(diào)函數(shù)的簡單運用

    回調(diào)函數(shù)就是函數(shù)指針變量作為另外一個函數(shù)的參數(shù)而使用的一種應(yīng)用情形。本文就詳細的介紹一下C語言回調(diào)函數(shù)的簡單運用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++中使用哈希表(unordered_map)的一些常用操作方法

    C++中使用哈希表(unordered_map)的一些常用操作方法

    C++標準庫中使用的unordered_map底層實現(xiàn)是哈希表,下面這篇文章主要給大家介紹了關(guān)于C++中使用哈希表(unordered_map)的一些常用操作方法,需要的朋友可以參考下
    2022-03-03
  • C++標準模板庫函數(shù)sort的那些事兒

    C++標準模板庫函數(shù)sort的那些事兒

    sort函數(shù)是標準模板庫的函數(shù),已知開始和結(jié)束的地址即可進行排序,可以用于比較任何容器(必須滿足隨機迭代器),任何元素,任何條件,執(zhí)行速度一般比qsort要快
    2013-09-09
  • 深入分析C++中兩個大數(shù)相乘結(jié)果不正確的問題

    深入分析C++中兩個大數(shù)相乘結(jié)果不正確的問題

    本篇文章是對C++中兩個大數(shù)相乘結(jié)果不正確的問題進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言進階:指針的進階(3)

    C語言進階:指針的進階(3)

    這篇文章主要介紹了C語言指針詳解及用法示例,介紹了其相關(guān)概念,然后分享了幾種用法,具有一定參考價值。需要的朋友可以了解下
    2021-09-09
  • C/C++代碼操作MySQL數(shù)據(jù)庫詳細步驟

    C/C++代碼操作MySQL數(shù)據(jù)庫詳細步驟

    這篇文章主要給大家介紹了關(guān)于C/C++代碼操作MySQL數(shù)據(jù)庫的相關(guān)資料,通過文中的這些示例,我們可以連接到MySQL數(shù)據(jù)庫,并執(zhí)行常見的數(shù)據(jù)庫操作,如創(chuàng)建表、插入數(shù)據(jù)和查詢數(shù)據(jù),需要的朋友可以參考下
    2023-12-12
  • C++順序容器(vector、deque、list)的使用詳解

    C++順序容器(vector、deque、list)的使用詳解

    本文主要介紹了C++順序容器(vector、deque、list)的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • C++簡單又輕松建立鏈式二叉樹流程

    C++簡單又輕松建立鏈式二叉樹流程

    二叉樹的鏈式存儲結(jié)構(gòu)是指,用鏈表來表示一棵二叉樹,即用鏈來指示元素的邏輯關(guān)系。通常的方法是鏈表中每個結(jié)點由三個域組成,數(shù)據(jù)域和左右指針域,左右指針分別用來給出該結(jié)點左孩子和右孩子所在的鏈結(jié)點的存儲地址
    2022-06-06

最新評論

奉节县| 天镇县| 宜都市| 廉江市| 吉林省| 宁远县| 榆中县| 普陀区| 缙云县| 噶尔县| 聂荣县| 绥德县| 子长县| 河间市| 南宁市| 囊谦县| 长乐市| 武陟县| 宝清县| 拉孜县| 卫辉市| 中西区| 姜堰市| 从化市| 清流县| 滨海县| 唐河县| 黔南| 舞阳县| 海伦市| 凉山| 上饶县| 水富县| 昆山市| 娄底市| 察隅县| 沙雅县| 吐鲁番市| 多伦县| 新余市| 福安市|