在我們定義乙個字串變數的時候如需使用鍵盤輸入資料給字串賦值一般會用到三種方式,記錄一下三種方式的區別。
如我們定義乙個字串 char name[10];(10代表字串的長度)。
scanf:
char name[10];
scanf("%s",name);
printf("輸入的name是:[%s]",name);
如果此時輸入的字元含有空格 ,在給字串賦值的時候就會出現 明明空格後面還有字元,並且長度不超過9位的情況下,字串缺只被賦值到了空格處 如:zhang san,此時name值卻只為 zhang。原來在字元被存到緩衝區的時候,空格代表著結束字元,scanf方法對字串賦值的時候,讀取到空格處就預設結束了。
gets:
char name[10];
gets(name);
printf("輸入的name是[%s]",name);
在使用gets方法給字串賦值的時候,不會遇到有空格就停止的問題。但是有乙個情況是如果我們輸入的字串長度大於所定義的字串長度減1的時候,如:zhang san feng,此時name所被賦予的值是 zhang san feng,此時字串長度竟然有14位,所定義的字串長度僅有10位,會造成陣列越界的後果。
fgets:
char name[10];
//name 字串 ,10 長度, stdin預設輸入裝置
fgets(name,10,stdin);
printf("輸入的name是[%s]",name);
此方法有三個引數,其中第二個代表字串所定義的長度,可有效避免陣列越界
當我們輸入 zhang san feng的時候。
可以看到,我們獲取到的輸出結果是 zhang san 。空格算乙個字元所以剛好有十個字元。
具體使用那種輸入方式可根據我們的實際情況進行判斷。
使用C 模擬鍵盤輸入
假如你想做乙個模擬鍵盤對當前的active程序進行輸入,該怎麼辦呢?今天就介紹乙個如何利用c 實現程式設計法模擬鍵盤輸入 今天我們使用的是system.windows.forms.dll中的sendkeys這個類 這是乙個靜態類,主要有兩個方法send表示傳送後立刻返回,sendwait表示傳送後等...
GoLang學習筆記(三十)鍵盤輸入
scan函式 func scan a inte ce n int,err error scan從標準輸入掃瞄文字,將成功讀取的空白分隔的值儲存進成功傳遞給本函式的引數。換行視為空白。返回成功掃瞄的條目個數和遇到的任何錯誤。如果讀取的條目比提供的引數少,會返回乙個錯誤報告原因。func testsca...
WebDriver學習筆記 模擬鍵盤輸入
通過keys類和send keys 方法模擬鍵盤輸入 from selenium import webdriver 呼叫keys模組 from selenium.webdriver.common.keys import keys dri webdriver.chrome dri.get 在輸入框輸入...