こんにちは、ユーザーから文字列を読み取りたいのですが (文字数に関係なく)、そのうちの 10 個だけを保持して保存したいと考えています。
例えば:
ユーザーの種類: こんにちは、Nick と申します。
ストアのみ: Hello my n
ありがとうございました。
あなたがそれをググった場合だけ...
char buf[11];
fgets(buf, sizeof(buf), stdin);
11 文字 = 10 文字に終端の NUL を加えたもの。
scanf特別に細工されたフォーマット文字列で使用します。
char name[11];
scanf("%10[^\n]%*[^\n]", name);
getchar();
いくつかの説明:
[^\n]つまり、「名前には改行文字以外のものを含めることができます」-従来の文字とは対照的に%s-「名前にはスペース文字以外のものを含めることができます」*「読むが保存しない」という意味getchar最後に行末文字を消費します(@DanielFischerによる提案)10文字を読み取り、残りを破棄するため、このような複雑なフォーマット文字列が必要になります。または、その後にいくつかのハックを使用fgetsして、行末まで文字を破棄することもできます。
char mystr[11];
scanf("%10[^\n]", mystr);
を使用scanf()して必要なことを行うことができますが、フォーマット文字列には注意する必要があります。10 文字を超えないようにするために a を使用していることに注意10してください (サイズ 11 のバッファーに収まります)。[\n]また、改行 (または最初の 10 文字) が表示されるまですべてを読み取るように指示しています。
char buf[11];
scanf("%10[^\n]",buf);