亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言中scanf與scanf_s函數(shù)的使用詳解

 更新時間:2021年10月18日 09:56:21   作者:許同學(xué)。。  
本文主要介紹了C語言中scanf與scanf_s函數(shù)的使用詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

1.scanf_s(是vs提供的函數(shù))

a.代碼1

int main()
{
	char a = 0;
	//scanf_s("%c", &a, 1);
	scanf_s("%c", &a, sizeof(a));
	return 0;
}

scanf_s有三個參數(shù),最后一個是變量a所占據(jù)空間的大?。▎挝粸樽止?jié)),這里可以寫1,也可以寫sizeof(a)。如果a為整型的話,第三個參數(shù)就為4,或者sizeof(a)。

b.代碼2

int main()
{
	char a = 0, b = 0;
	scanf_s("%c %c", &a, 1, &b, 1);
	printf("%c %c", a, b);
	return 0;
}

可不要寫成  scanf_s("%c%c",&a,&b,1,1); 這樣會出錯的

c.代碼3

int main()
{
	char arr1[5] = { 0 };
	scanf_s("%s", arr1, sizeof(arr1));
	printf("%s", arr1);
	return 0;
}

注意:輸入字符的個數(shù)時,一定是比數(shù)組的空間個數(shù)小的,比如像上面的代碼只能輸入1-4個字符,而不是5個,不然會出錯的。(arr[4]裝的應(yīng)該是一個換行符)

d.安全性檢測

int main()
{
	char arr1[5] = { 0 };
	int c=scanf_s("%s", arr1, sizeof(arr1));
	printf("%d\n", c);
	printf("%s", arr1);
	return 0;
}

如果輸入的字符個數(shù)>=數(shù)組空間 個數(shù),scanf_s的返回值就為0,反之則為1。

int main()
{
	char arr1[5] = { 0 };
	scanf_s("%s", arr1, sizeof(arr1));
	printf("%s", arr1);
	return 0;
}

 如果輸入的字符個數(shù)>=數(shù)組空間 個數(shù),是不會打印數(shù)組中的元素的。(而scanf函數(shù)就會打印出)

2.scanf(標準的庫函數(shù))

a.代碼1

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	printf("%d", a);
	return 0;
}

在VS13 17 19的版本下使用scanf函數(shù)一定在最開始(#define _CRT_SECURE_NO_WARNINGS),不然會報錯的。

b.安全性測試

int main()
{
	char arr1[5] = { 0 };
	int c=scanf("%s", arr1);
	printf("%d\n", c);
	printf("%s", arr1);
	return 0;
}

 當我們輸入abcdefg 7個字符時(已經(jīng)超出了數(shù)組的空間個數(shù)了),雖然可以打印出來,但是arr1附近的??臻g已被破壞了,出現(xiàn)越界的情況了。scanf_s不會打印出來,也就不存在越界的行為了。

c.當在scanf函數(shù)里面輸入格式符

如%d %d(%d%d之間有空格),那么通過標準輸入設(shè)備(鍵盤)輸入時兩個整型之間也加一個空格。

如%d,%d(%d%d之間逗號),那么通過標準輸入設(shè)備(鍵盤)輸入時兩個整型之間也加一個逗號。

3.總結(jié)

使用scanf_s函數(shù)雖然安全性比較高,但是可移植性差。比如含有scanf_s函數(shù)的代碼不一定在其它的編譯器上能夠跑過。

scanf函數(shù)雖然沒有scanf_s函數(shù)那么安全,但可移植性是比scanf_s強。

scanf_s函數(shù)與scanf函數(shù)的使用與比較今天就分享到這里了,如果對你有幫助的話嗎,可以給個關(guān)注,順便給個贊。

到此這篇關(guān)于C語言中scanf與scanf_s函數(shù)的使用詳解的文章就介紹到這了,更多相關(guān)C語言 scanf與scanf_s內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言實現(xiàn)雙人貪吃蛇游戲?qū)嵗a

    C語言實現(xiàn)雙人貪吃蛇游戲?qū)嵗a

    大家好,本篇文章主要講的是C語言實現(xiàn)雙人貪吃蛇游戲?qū)嵗a,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++提取文件中信息的方法

    C++提取文件中信息的方法

    這篇文章主要為大家詳細介紹了C++提取文件中信息的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C++超詳細講解函數(shù)參數(shù)的默認值

    C++超詳細講解函數(shù)參數(shù)的默認值

    在C++中,定義函數(shù)時可以給形參指定一個默認的值,這樣調(diào)用函數(shù)時如果沒有給這個形參賦值(沒有對應(yīng)的實參),那么就使用這個默認的值。也就是說,調(diào)用函數(shù)時可以省略有默認值的參數(shù)
    2022-05-05
  • C語言之雙向鏈表詳解及實例代碼

    C語言之雙向鏈表詳解及實例代碼

    這篇文章主要介紹了C語言之雙向鏈表的相關(guān)資料,并附實例代碼,有需要的小伙伴可以參考下
    2016-09-09
  • C/C++ 中const關(guān)鍵字的用法小結(jié)

    C/C++ 中const關(guān)鍵字的用法小結(jié)

    C++中的const關(guān)鍵字的用法非常靈活,而使用const將大大改善程序的健壯性。這篇文章主要介紹了C/C++ 中const關(guān)鍵字的用法,需要的朋友可以參考下
    2020-02-02
  • 詳解C語言動態(tài)內(nèi)存的分配

    詳解C語言動態(tài)內(nèi)存的分配

    這篇文章主要為大家介紹了C語言動態(tài)內(nèi)存的分配,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • socket編程之bind()函數(shù)使用示例詳解

    socket編程之bind()函數(shù)使用示例詳解

    這篇文章主要為大家介紹了socket編程之bind()函數(shù)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • 用C語言模仿Python函數(shù)的實例

    用C語言模仿Python函數(shù)的實例

    下面小編就為大家?guī)硪黄肅語言模仿Python函數(shù)的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • C語言中 & 和 &&的區(qū)別詳解

    C語言中 & 和 &&的區(qū)別詳解

    這篇文章主要介紹了C語言中 & 和 &&的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Linux線程同步之信號C語言實例

    Linux線程同步之信號C語言實例

    這篇文章主要介紹了Linux線程同步之信號C語言實例,本文直接給出代碼實例,需要的朋友可以參考下
    2015-04-04

最新評論