こんにちは、ユーザーから文字列を読み取りたいのですが (文字数に関係なく)、そのうちの 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);