[問題] gets和scanf問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEV C
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
程式1
#include <stdio.h>
int main(int argc, char *argv[]) {
char s1[4]="XYZ";
char s2[4];
gets(s2);
printf ("s2=%s\n",s2);
printf ("s1=%s\n",s1);
return 0;
}
程式2
#include <stdio.h>
int main(int argc, char *argv[]) {
char s1[4]="XYZ";
char s2[4];
scanf("%s",s2);
printf ("s2=%s\n",s2);
printf ("s1=%s\n",s1);
return 0;
}
補充說明(Supplement):
老師先教scanf,再教gets,
教到gets時, 編譯器上顯示gets不安全,
老師解釋: 因為gets會有容易發生內存溢位
我不懂的是
我try了上面兩個程式, 輸入ABCDEFG, 顯示s1=EFG非XYZ, 發生溢位
為什麼在gets就顯示不安全呢?scanf就沒有呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.184.137
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1439091514.A.6AA.html
→
08/09 12:05, , 1F
08/09 12:05, 1F
→
08/09 13:08, , 2F
08/09 13:08, 2F
推
08/10 15:28, , 3F
08/10 15:28, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章