簡體   English   中英

printf和fprintf的結果不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM