C 中使用 gets() ,編譯時(shí)會(huì)出現(xiàn)如下警告:
warning: this program uses gets(), which is unsafe.
gets() 不安全是因?yàn)槟憬o了他一個(gè)緩沖區(qū),但是你卻沒(méi)有告訴它這個(gè)緩沖區(qū)到底有多大,也不知道輸入的內(nèi)容到底有多大,輸入的內(nèi)容可能超出緩沖區(qū)的結(jié)尾,引起你的程序崩潰。
解決方法可以使用 fgets 替代:
char buffer[bufsize]; fgets(buffer, bufsize, stdin);
實(shí)例:
// 使用 gets() char buffer[4096]; gets(buffer); // 使用 fgets() 替換 gets() char buffer[4096]; fgets(buffer, (sizeof buffer / sizeof buffer[0]), stdin);