您好我想从用户那里读取一个字符串(无论他给出多少个字符),但我想保留并存储其中的10个。
例如:
用户类型:您好,我的名字是尼克。
仅限商店:Hello my n
谢谢。
答案 0 :(得分:4)
只有你用谷歌搜索它......
char buf[11];
fgets(buf, sizeof(buf), stdin);
11 char = 10 char加上终止NUL。
答案 1 :(得分:2)
char mystr[11];
scanf("%10[^\n]", mystr);
您可以使用scanf()
执行您想要的操作,但您需要注意格式字符串。注意我使用10
来确保我们不要超过10个字符(这将适合11大小的缓冲区)。另外我用[\n]
告诉它读取所有内容,直到看到换行符(或10个字符,这是第一个)。
答案 2 :(得分:2)
将scanf
与特制的格式字符串一起使用:
char name[11];
scanf("%10[^\n]%*[^\n]", name);
getchar();
一些解释:
[^\n]
表示“名称可以包含除换行符之外的任何内容” - 而不是更传统的%s
- “名称可以包含除空格字符之外的任何内容”*
表示“读但不能存储”getchar
最后消耗了行尾字符(@DanielFischer的建议)需要这么复杂的格式字符串,因为你想要读取10个字符并丢弃其余字符。或者,您可以使用fgets
,然后使用某些黑客来丢弃字符,直到行尾。
答案 3 :(得分:0)
char buf[11];
scanf("%10[^\n]",buf);