读取c中特定的字符数

时间:2013-01-11 19:45:05

标签: c string

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

例如:

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

仅限商店:Hello my n

谢谢。

4 个答案:

答案 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();

一些解释:

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

需要这么复杂的格式字符串,因为你想要读取10个字符并丢弃其余字符。或者,您可以使用fgets,然后使用某些黑客来丢弃字符,直到行尾。

答案 3 :(得分:0)

char buf[11];
scanf("%10[^\n]",buf);