打印char数组后为什么会有10?

时间:2014-09-23 18:10:53

标签: c input

我想知道,为什么我的打印结尾总会有10个。

我正在尝试输入带空格的字符串,然后打印出所有字符。

输入:hello

输出:104 101 108 108 111 10

应输出:104 101 108 108 111

  unsigned char input[256];
  fgets(input,sizeof(input),stdin);

  for(int i = 0; input[i] != '\0'; i++) {
    printf("%u ",input[i]);
  }

5 个答案:

答案 0 :(得分:8)

10是换行符。 fgets使用换行符将其复制到缓冲区。来自the docs

  

如果文件结束或找到换行符,则解析停止,在这种情况下str将包含该换行符。

文档是你的朋友。

答案 1 :(得分:1)

ASCII码10是换行符(\ n):

http://www.theasciicode.com.ar/ascii-control-characters/line-feed-ascii-code-10.html

也许你正在从文件中读取字符串?

答案 2 :(得分:1)

您正在打印换行符。

打印出来时,这表示为数字10(ASCII)。

答案 3 :(得分:1)

10是新行的ASCII码(\ n)

答案 4 :(得分:1)

'\n'的结尾在ASCII中包含代码10。

请注意打印出6个数字。打赌你输入6个键:

H E L L O 输入

所以输入不是“你好”,而是'h''e''l''l''o''\n'。< / p>

fgets()阅读这些内容并将其保存在input[]中。它还附加了'\0',因此保存了7 char