2012-09-27 62 views
2

我不知道爲什麼我總是給整個文件寫一個整數。C Linux - 沒有寫整數

下面的代碼:

#include <stdio.h> 
#include <stdlib.h> 
#include <fcntl.h> 
#include <string.h> 

int main (int argc, char* argv[]) { 


    int fd, w; 
    int num=80; 

    fd=open ("file3.txt", O_CREAT|O_WRONLY, 0777); 

    if (fd>0) { 

    w=write (fd, &num, sizeof (int)); 

     if (w==-1) { 

      printf ("Writing Error \n"); 
      return EXIT_FAILURE; 

    } 

    } 

    close (fd); 
    return EXIT_SUCCESS; 

} 

有誰知道什麼會是什麼?

非常感謝......

+1

什麼問題? 'strerror(errno)'說什麼? –

+0

該文件是用像P \ 00 \ 00 \ 00這樣的東西創建的... –

+2

您是否期望文件中有十進制表示?你應該得到字節。 –

回答

7

你寫了二進制值的文件,而不是ASCII碼。如果你想在文件中使用ascii,你首先需要sprintf到一個char緩衝區,然後是write這個char緩衝區。或者用fopen而不是open打開文件,並使用fprintf

p.s.你想在if (fd > 0) {區塊內找到close(fd)。另外,從技術上講,open唯一的錯誤返回是-1。所有其他值(正數,零,負數)都是成功的。

+0

謝謝大家......我做了以下內容: int fd,w; int num = 80; char buffer [15]; sprintf(buffer,「%d」,num); w =寫入(fd,buffer,strlen(buffer)); 它的工作! –

0

從您的意見是正確的工作100%:P恰好是十進制80

write()是輸出整數十進制表示的字節。

你可能想看看fopenfprintf作爲一個簡單的方法來獲得它看起來像你期待的。