为什么我的小型C程序使用cat实用程序打印不同的字符串?

李玉成
#include <string.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
  char a[6] = "abcdd";
  char b[5] = "1234";

  strcpy(a, b);

  write(1, a, 4);
  printf("AA\n");
  write(1, b, 4);
  printf("CC\n");
}

我正在学习strcpy func。

带./a.out

1234AA
1234CC

使用./a.out |

12341234AA$
CC$

我读人猫。找不到与此。

即使编译后仍可以进行哪些更改?

发生了什么?我缺少什么概念?

一些程序员哥们

这是一个缓冲问题。

write调用直接写入到标准输出文件描述符。这些写操作是无缓冲的

printf函数写stdout在正常情况下(stdout连接到端子时)是行缓冲的(输出实际上写在换行符上)。

但是,当stdout未连接到端子时(例如,通过管道传输输出时),缓冲方案将更改。它变得完全缓冲。这意味着仅在显式刷新(或缓冲区变满)时才写入缓冲区,这在程序退出时发生。

因此,来自的未缓冲输出write将首先被写入。然后,当程序退出时,stdout将写入缓冲区。

如果在两种情况下都想要相同的行为,则可以stdout自己显式刷新缓冲区:

write(STDOUT_FILENO, a, 4);
printf("AA\n");
fflush(stdout);

[请注意,我将“幻数” 1更改为POSIX预定义符号STDOUT_FILENO,即使快速浏览一下代码,通常也更容易理解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的程序不打印字符串?

来自分类Dev

为什么我的C程序不能打印正确的字符串?

来自分类Dev

为什么我的C程序不能打印正确的字符串?

来自分类Dev

Glib字符串实用程序函数(与strcspn等效)

来自分类Dev

Unix:如何使用 indexOf 类实用程序获取子字符串

来自分类Dev

为什么`bc`实用程序不以`^ C`退出

来自分类Dev

我使用哪个UNIX实用程序?

来自分类Dev

如何使用Bash和标准实用程序确定两个字符串之间的行数?

来自分类Dev

将连接字符串指向自定义实用程序

来自分类Dev

在JDK 8 HotSpot JVM中访问字符串池内容的实用程序

来自分类Dev

字符串实用程序库用于格式化浮点数?

来自分类Dev

LibreOffice Basic:用于拆分字符串的现有实用程序?

来自分类Dev

有没有实用程序可以比较两个JSON字符串?

来自分类Dev

是否有类似grep的实用程序来匹配字符串而不是行?

来自分类Dev

“字符串”实用程序,包括换行(LF)和回车符(CR)

来自分类Dev

为什么在使用“ At”实用程序后不能自由使用bash?(在ctrl + c之前不能插入stdin)

来自分类Dev

为什么Debian / Ubuntu上的重命名实用程序与其他发行版(如CentOS)上的重命名实用程序不同?

来自分类Dev

linux实用程序“ sort”如何工作?(为什么它不按我认为的方式工作?)

来自分类Dev

为什么我的脚本中的 unix 核心实用程序无法识别空格?

来自分类Dev

使用date实用程序打印时代时间

来自分类Dev

为什么ssh实用程序被视为pty?

来自分类Dev

为什么我的C mpi程序中没有字符串?

来自分类Dev

为什么我不能使用cout在C ++中打印字符串值的数组?

来自分类Dev

为什么在使用 cd 作为 env 的实用程序参数时会出现错误?

来自分类Dev

需要指导以根据用户输入制作小型实用程序

来自分类Dev

为什么unix实用程序连接在不同的Linux发行版上会产生不同的结果?

来自分类Dev

为什么在不同的Linux发行版上,unix实用程序联接会产生不同的结果?

来自分类Dev

使用ls实用程序时,(?)是什么意思?

来自分类Dev

使用unzip实用程序时,-h或-hh是什么?

Related 相关文章

  1. 1

    为什么我的程序不打印字符串?

  2. 2

    为什么我的C程序不能打印正确的字符串?

  3. 3

    为什么我的C程序不能打印正确的字符串?

  4. 4

    Glib字符串实用程序函数(与strcspn等效)

  5. 5

    Unix:如何使用 indexOf 类实用程序获取子字符串

  6. 6

    为什么`bc`实用程序不以`^ C`退出

  7. 7

    我使用哪个UNIX实用程序?

  8. 8

    如何使用Bash和标准实用程序确定两个字符串之间的行数?

  9. 9

    将连接字符串指向自定义实用程序

  10. 10

    在JDK 8 HotSpot JVM中访问字符串池内容的实用程序

  11. 11

    字符串实用程序库用于格式化浮点数?

  12. 12

    LibreOffice Basic:用于拆分字符串的现有实用程序?

  13. 13

    有没有实用程序可以比较两个JSON字符串?

  14. 14

    是否有类似grep的实用程序来匹配字符串而不是行?

  15. 15

    “字符串”实用程序,包括换行(LF)和回车符(CR)

  16. 16

    为什么在使用“ At”实用程序后不能自由使用bash?(在ctrl + c之前不能插入stdin)

  17. 17

    为什么Debian / Ubuntu上的重命名实用程序与其他发行版(如CentOS)上的重命名实用程序不同?

  18. 18

    linux实用程序“ sort”如何工作?(为什么它不按我认为的方式工作?)

  19. 19

    为什么我的脚本中的 unix 核心实用程序无法识别空格?

  20. 20

    使用date实用程序打印时代时间

  21. 21

    为什么ssh实用程序被视为pty?

  22. 22

    为什么我的C mpi程序中没有字符串?

  23. 23

    为什么我不能使用cout在C ++中打印字符串值的数组?

  24. 24

    为什么在使用 cd 作为 env 的实用程序参数时会出现错误?

  25. 25

    需要指导以根据用户输入制作小型实用程序

  26. 26

    为什么unix实用程序连接在不同的Linux发行版上会产生不同的结果?

  27. 27

    为什么在不同的Linux发行版上,unix实用程序联接会产生不同的结果?

  28. 28

    使用ls实用程序时,(?)是什么意思?

  29. 29

    使用unzip实用程序时,-h或-hh是什么?

热门标签

归档