[英]different results with printf and fprintf
我需要使用Linux函数ssize_t write(int fd, const void *buf, size_t count);
打印“ word = n”(其中[0..10]中的n)以流式传输的函数ssize_t write(int fd, const void *buf, size_t count);
。 尝试使用fprintf,但是会产生奇怪的结果:程序在大约1%的调用“ woword = n”中打印,例如“ woword = 7”的length
为7。Printf可以正确打印。 我做错了还是这是书包?
if ((id_result = open( out , O_WRONLY)) <= 0) {
fprintf(stderr, "%s : %s\n", currentDateTime().c_str(), "could not open output\0");
ret = P_STREAMS_LOAD_ERROR;
}
void printProbability( int probability ){
char buf[50];
memset( buf, '\0', 50 );
int length = sprintf( buf, "word=%i\n\0", probability );
fprintf(stderr, "debug : word=%i len = %i\n\0", probability, length );
int result = write( id_result, buf, length );
if( result == -1){
fprintf(stderr, "%s : %s\n", currentDateTime().c_str(), "error \n");
}
}
编辑:
据我了解,我们有2种理论:1)混合printf并编写2)在fprintf中使用'\\ 0'和'\\ n'
int length = sprintf( buf, "word=%i", probability );
int result = write( id_result, buf, length );
write( id_result, "\n", 1 );
与此代码我仍然有相同的错误
aa帮我:))
如果您散布了对printf
(或write
)和fprintf(stderr, ...)
的调用,则输出不一定按顺序出现。 正在进行缓冲,实际输出可能不会在行尾字符处切换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.