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

Giv*_*Pie -1 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]);
  }
Run Code Online (Sandbox Code Playgroud)

Ed *_* S. 8

10是换行符. fgets使用换行符并将其复制到缓冲区.来自文档:

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

文档是你的朋友.