您好,我想从用户那里读取一个字符串(无论他给出多少个字符),但我只想保留和存储其中的 10 个。
例如:
用户类型:你好,我的名字是尼克。
并且只存储:你好,我的 n
谢谢你。
只要你用谷歌搜索...
char buf[11];
fgets(buf, sizeof(buf), stdin);
11 char = 10 char 加上终止的 NUL。
char mystr[11];
scanf("%10[^\n]", mystr);
你可以用scanf()
它来做你想做的事,但你需要小心格式字符串。注意我使用 a10
来确保我们不占用超过 10 个字符(这将适合大小为 11 的缓冲区)。此外,我告诉它[\n]
阅读所有内容,直到它看到一个换行符(或 10 个字符,哪个是第一个)。
scanf
与特制的格式字符串一起使用:
char name[11];
scanf("%10[^\n]%*[^\n]", name);
getchar();
一些解释:
[^\n]
表示“名称可以包含除换行符之外的任何内容” - 与更传统的相反%s
- “名称可以包含除空格字符之外的任何内容”*
意思是“读取但不存储”getchar
最后消耗行尾字符(@DanielFischer 的建议)需要如此复杂的格式字符串,因为您要读取 10 个字符并丢弃其余字符。或者,您可以使用fgets
后跟一些技巧来丢弃字符,直到行尾。
char buf[11];
scanf("%10[^\n]",buf);