當你嘗試輸入乙個比a 5 長的字串

2021-09-27 10:43:05 字數 925 閱讀 4519

今天看完輸入輸出,其中教了這樣來輸入乙個字串

char a[30]

;scanf

("%s"

,a);

書上說你不要輸入大於定義位數的字串,但是我很好奇,輸入了會怎樣?

於是我寫了:

char a[5]

;scanf

("%s"

,a);

//鍵入123456

printf

("%s\n"

,a);

//輸出123456

printf

("%d"

,sizeof a)

;//輸出5

奇怪明明是sizeof=5,為什麼可以輸出6位呢

於是我試了試:

#include

#include

intmain

(void

)

這裡可以看出來 strlen測量出來是6,而sizeof是5

然後我又把輸出a[5]哪一行改為

printf

("%d\n"

,a[6])

;

最終輸出了0,也就是』\0』

讓大家更加了解其中的原理,為什麼strlen輸出是6呢,因為strlen是到達\0結束計數,而你告訴過計算機a有5位,所以sizeof判斷為5.

總結,當你scanf乙個大於你設定的長度的字串時,系統會給更多的空間來儲存這些多餘的字元,而且你可以用a[5],或者更大的下標來檢索這些字元,但是在某些地方比如sizeof,會預設只有你設定的長度。

ps:scanf("%s",a);

也可以用scanf("%s」,&a);

就算a是乙個陣列。。

解決資料輸入的乙個嘗試

應用系統資料輸入是個大問題。乙個客戶很多資料存在word檔案裡,word檔案是文字與 混排。需要將 中的資料提取出來。c 開發,採用了這種方式 for int tablepos 1 tablepos odoc.tables.count tablepos 個表 n tablepos,odoc.tabl...

乙個bug引發的問題 python字串比較大小

一 問題 專案遇到乙個根據當前日期比較授權日期判斷業務是否過期或者正常的需求,很簡單的操作,拿當前日誌跟授權日期比較,授權日期大於等於當前日期 正常 授權日期小於當前日期 過期 但是前段顯示出現了問題。二 排查 發現兩個日期都是字串並且格式還不一樣 這個粗心哦 bug修改前後是這樣的 其實很簡單,但...

獲取乙個字串在乙個長字串中出現的次數

獲取乙個字串 kk 在乙個長字串中出現的次數 思路 1 定義乙個計數器 2 獲取 kk 第一次出現的位置。3 從第一次出現位置後剩餘的字串中繼續獲取 kk 出現的位置,每獲取一次就計數一次。4當獲取不到時,計數完成,返回計數器的值。public class exercise2 return coun...