国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - Linux系統下C語言gets函數出現警告問題的解決方法

Linux系統下C語言gets函數出現警告問題的解決方法

2021-07-12 15:30Linuxidc C/C++

這篇文章主要給大家介紹了關于在Linux系統下C語言gets函數出現警告問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

發現問題

最近在Linux下編譯C語言,用到gets這個函數,代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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");
 
}

Linux系統下C語言gets函數出現警告問題的解決方法

但是出現如下警告,

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

linuxidc.c: 在函數‘main'中:

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

gets(s);

^

/tmp/ccvwVatT.o:在函數‘main'中:

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

Linux系統下C語言gets函數出現警告問題的解決方法

問題解決

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#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");
 
}

Linux系統下C語言gets函數出現警告問題的解決方法

OK,問題解決。

總結

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

原文鏈接:https://www.linuxidc.com/Linux/2018-12/155699.htm

延伸 · 閱讀

精彩推薦
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
主站蜘蛛池模板: 日韩免费av一区二区 | 天天射影院 | 亚洲综合国产 | 爱爱综合网 | 91亚洲国产精品 | 欧美一区二区激情视频 | 欧美一区二区高清视频 | 成年人黄色影院 | 一级做a | 精品国产91乱码一区二区三区 | 人人99| 国产日韩欧美综合 | 国产精品福利在线观看 | 自拍偷拍亚洲欧美 | 精品国产乱码久久久久久影片 | 中文字幕在线影院 | 国产精品一区二 | 伊人激情综合 | 亚洲一区二区三区四区的 | 久久久精品亚洲 | 亚洲国产精品成人 | 国产中文字幕在线观看 | 一特黄a大片免费视频 视频 | 成人不卡视频 | 中文字幕视频一区 | 国产精品毛片在线 | 久久久久综合 | 久久久久91 | 久久久亚洲国产美女国产盗摄 | 久久男人天堂 | 色偷偷偷| 日韩成人中文字幕 | 在线成人www免费观看视频 | 国产精品久久久久久久久久久久久 | 中文字幕一区二区三区在线观看 | 日日夜夜精品 | 成人免费影院 | 日韩在线视频资源 | 久久久婷 | 一区二区三区精品视频 | 国产日韩欧美综合 |