-6

您好,我想从用户那里读取一个字符串(无论他给出多少个字符),但我只想保留和存储其中的 10 个。

例如:

用户类型:你好,我的名字是尼克。

并且只存储:你好,我的 n

谢谢你。

4

4 回答 4

5

只要你用谷歌搜索...

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

11 char = 10 char 加上终止的 NUL。

于 2013-01-11T19:48:39.257 回答
2
char mystr[11];
scanf("%10[^\n]", mystr);

你可以用scanf()它来做你想做的事,但你需要小心格式字符串。注意我使用 a10来确保我们不占用超过 10 个字符(这将适合大小为 11 的缓冲区)。此外,我告诉它[\n]阅读所有内容,直到它看到一个换行符(或 10 个字符,哪个是第一个)。

于 2013-01-11T19:54:33.493 回答
2

scanf与特制的格式字符串一起使用:

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

一些解释:

  • 数组中的 11 个元素 - 你知道为什么
  • [^\n]表示“名称可以包含除换行符之外的任何内容” - 与更传统的相反%s- “名称可以包含除空格字符之外的任何内容”
  • *意思是“读取但不存储”
  • getchar最后消耗行尾字符(@DanielFischer 的建议)

需要如此复杂的格式字符串,因为您要读取 10 个字符并丢弃其余字符。或者,您可以使用fgets后跟一些技巧来丢弃字符,直到行尾。

于 2013-01-11T20:10:49.563 回答
0
char buf[11];
scanf("%10[^\n]",buf);
于 2013-01-11T19:55:06.857 回答