一行の文字列を読み込むC言語
C言語では `gets` 関数や `fgets` 関数を使用して1行分の文字列を読み取ることができます。
- こっそり
#include <stdio.h>
int main() {
char str[100];
printf("输入字符串:");
gets(str);
printf("输入的字符串是:%s\n", str);
return 0;
}
- fgets
#include <stdio.h>
int main() {
char str[100];
printf("输入字符串:");
fgets(str, sizeof(str), stdin);
printf("输入的字符串是:%s\n", str);
return 0;
}
gets関数を使用すると、(空白を含んだ)一連の文字を読み取り、指定された文字配列に格納できます。しかしながら、gets関数は入力文字長のチェックを行わないため、バッファーオーバフローによるセキュリティ問題を発生させる可能性があります。
fgets関数は指定された長さの文字列(改行文字を含む)を読み込んで指定された文字配列に格納します。また、fgets関数は入力文字列の長さが指定された文字配列の長さを超えていないかを確認するため、バッファオーバーフローの問題を回避できます。