-6

こんにちは、ユーザーから文字列を読み取りたいのですが (文字数に関係なく)、そのうちの 10 個だけを保持して保存したいと考えています。

例えば:

ユーザーの種類: こんにちは、Nick と申します。

ストアのみ: Hello my n

ありがとうございました。

4

4 に答える 4

5

あなたがそれをググった場合だけ...

char buf[11];
fgets(buf, sizeof(buf), stdin);

11 文字 = 10 文字に終端の NUL を加えたもの。

于 2013-01-11T19:48:39.257 に答える
2

scanf特別に細工されたフォーマット文字列で使用します。

char name[11];
scanf("%10[^\n]%*[^\n]", name);
getchar();

いくつかの説明:

  • 配列内の11個の要素-理由はご存知でしょう
  • [^\n]つまり、「名前には改行文字以外のものを含めることができます」-従来の文字とは対照的に%s-「名前にはスペース文字以外のものを含めることができます」
  • *「読むが保存しない」という意味
  • getchar最後に行末文字を消費します(@DanielFischerによる提案)

10文字を読み取り、残りを破棄するため、このような複雑なフォーマット文字列が必要になります。または、その後にいくつかのハックを使用fgetsして、行末まで文字を破棄することもできます。

于 2013-01-11T20:10:49.563 に答える
2
char mystr[11];
scanf("%10[^\n]", mystr);

を使用scanf()して必要なことを行うことができますが、フォーマット文字列には注意する必要があります。10 文字を超えないようにするために a を使用していることに注意10してください (サイズ 11 のバッファーに収まります)。[\n]また、改行 (または最初の 10 文字) が表示されるまですべてを読み取るように指示しています。

于 2013-01-11T19:54:33.493 に答える
0
char buf[11];
scanf("%10[^\n]",buf);
于 2013-01-11T19:55:06.857 に答える