C++ printf或任何输出函数实际上做什么?
我想知道所有这些输出函数,基本上是做什么的? 因为我经历过很多次,printf在遇到它的时候并不总是在屏幕上打印,我听说它会放入缓冲区或类似的东西。 因此,如果有人能清楚地说明实际发生了什么。 如果还可以提供关于输入函数的相同信息,那就太好了。。 你说得越深入,就会越有帮助。 谢谢 Printf 将格式指向的C字符串写入标准输出(stdout)。 如果格式包含格式说明符(以%)开头的子序列, 格式后面的附加参数已格式化并插入 在结果字符串中替换各自的说明符 这里已经很好地解释了实际工作原理:C++ printf或任何输出函数实际上做什么?,c++,c,outputstream,C++,C,Outputstream,我想知道所有这些输出函数,基本上是做什么的? 因为我经历过很多次,printf在遇到它的时候并不总是在屏幕上打印,我听说它会放入缓冲区或类似的东西。 因此,如果有人能清楚地说明实际发生了什么。 如果还可以提供关于输入函数的相同信息,那就太好了。。 你说得越深入,就会越有帮助。 谢谢 Printf 将格式指向的C字符串写入标准输出(stdout)。 如果格式包含格式说明符(以%)开头的子序列, 格式后面的附加参数已格式化并插入 在结果字符串中替换各自的说明符 这里已经很好地解释了实际工作原理: 您
大多数时候printf都是这样做的:(没有缓冲部分和其他一些小事情) 对于%s标志:
void my_putchar(char c)
{
write(1, &c, 1);
}
int my_putstr(char *str) // printf("%s", "hello");
{
int i;
i = 0;
while (str[i] != '\0')
{
my_putchar(str[i]);
i = i + 1;
}
}
对于%d标志
void my_put_nbr(int nb) // printf("%d", 100);
{
if (nb > 9)
my_put_nbr(nb / 10);
my_putchar(nb % 10 + '0');
}
谢谢,但这并不能解释缓冲区部分。为什么有时只有遇到“\n”@RahulBhojwani时才会打印:-stdout流是缓冲的,所以只有在到达换行符后才会显示缓冲区中的内容