scanf函數和scanf_s函數都是用來從標準輸入流中讀取數據的函數,但是scanf_s函數是C11標準中新增的安全版本函數,目的是為了防止緩沖區溢出等安全問題。
scanf函數的使用方法如下:
#include <stdio.h>
int main() {
int num;
printf("請輸入一個整數:");
scanf("%d", &num);
printf("你輸入的整數是:%d\n", num);
return 0;
}
scanf_s函數的使用方法與scanf函數類似,但是它多了一個參數用于指定讀取的數據的最大長度。使用scanf_s函數時,可以在讀取字符串時指定最大長度,防止緩沖區溢出。
#include <stdio.h>
int main() {
char str[10];
printf("請輸入一個字符串:");
scanf_s("%9s", str, sizeof(str));
printf("你輸入的字符串是:%s\n", str);
return 0;
}
在上面的例子中,%9s表示最多讀取9個字符的字符串,因為數組str的長度為10,所以要留一個字節給字符串的結束符’\0’。
需要注意的是,scanf_s函數在一些編譯器中可能不被支持,需要在編譯選項中加上"-D_CRT_SECURE_NO_WARNINGS"來禁用編譯器的警告信息。