c語言 輸入 用scanf 實現 gets的效果

2022-08-27 20:09:09 字數 1354 閱讀 6481

scanf("%2d",&n);//讀取最大2位整數,後面的截斷

scanf("%10s",str);//讀取最大10位字元

scanf("%*[^\n]");scanf("%*c");//使緩衝區溢位,清空 

fflush(stdin);//重新整理緩衝區 不是很通用

匹配特定字元
scanf("%[abcd]");//只讀取字元abcd,順序不固定,遇到其他字元結束
%[a-z]	讀取abc...xyz範圍內的字元

%[a-z] 讀取所有大寫字母

%[0-9] 讀取所有的數字

%[a-za-z0-9] 讀取所有小寫字母,大寫字母,數字

不匹配特定字串
%[^\n] 表示匹配除換行符以外的所有字元,遇到換行符停止

%[^0-9] 表示匹配除數字以外的所有字元,遇到十進位制數字停止

丟棄讀取到的字元
%*d //表示讀取乙個整數並丟棄

scanf("%*d %d",&n);

%type

type表示讀取什麼型別資料,例如%d,%s,%[a-z],%[^a-z];type型別必須有

width表示讀取最大寬度,可有可無

*表示丟棄讀到的資料,可有可無

輸入密碼小程式

#include#include#include#define pwdlen 20

void getpwd(char *pwd,int pwdlen);

int main()

/**獲取使用者輸入的密碼

@param pwd char* 儲存密碼的記憶體首位址

@param pwdlen int 密碼的最大長度

*/void getpwd(char *pwd,int pwdlen)

else if(isprint(ch))

}pwd[i]=0; //字串結束符

}

#include #include  為windows特有標頭檔案

int main()else

} return 0;

}

#include #include #include int main()

} printf("number:%d\n",++i);

sleep(1000);//暫停1秒

//有小問題 sleep期間按esc無效

}//while

return 0;

}

C語言使用scanf輸入

scanf 函式結構 scanf 函式被用來從stdin讀入資料,並且在程式中儲存資料。預設,這個stdin流是來著鍵盤輸入。scanf 的函式結構與printf 類似 int i scanf d i d 是乙個佔位符,說明這個地方有乙個變數,並且為整型變數 是個位址符,表明這個地方放置位址,i的意...

c語言裡面用scanf連續輸入字元型資料常見問題

include include int main 很簡單的乙個程式,看起來應該沒有問題,執行結果理論上應該像這樣 但是實際上是這樣 其中的原因就在於scanf是從標準緩衝區中讀取輸入的字元的,所以想上面那樣寫的時候字元型變數j接收的就是輸入i之後輸入的那個回車鍵。解決方法 1.用fflush std...

C語言格式輸入函式scanf 詳解

scanf函式稱為格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中。scanf函式是乙個標準庫函式,它的函式原型在標頭檔案 stdio.h 中。與printf函式相同,c語言也允許在使用scanf函式之前不必包含stdio.h檔案。scanf函式的一般形式為 scanf 格式控制...