2012-11-01 47 views
1

我無法使用C上提供的任何文件處理函數(包括putw()fprintf()fwrite())將整數值13寫入文件。C文件處理 - 整數值13無法寫入文件

#include <stdio.h> 
#include <conio.h> 

void main() 
{ 
    int i; 
    int arr[]={10, 11, 12, 13, 14, 15}; 
    FILE *fp; 
    if (fp = fopen("test", "w")) { 
     for(i=0; i<6; i++) { 
      putw(arr[i], fp); 
     } 
    } 
    fclose(fp); 
    fp = fopen("test", "r"); 
    while ((i=getw(fp))!= EOF) { 
     printf("%d, ",i); 
    } 
    fclose(fp); 
    getch(); 
} 

發出輸出

10, 11, 12, 3584, 3840, 

和改性陣列

int arr[]={13, 11, 12, 13, 14, 15}; 

發出輸出

2816, 3072, 0, 14, 15, 

可以注意到在沒有遇到後預期的輸出值13。 任何人都可以幫我解決這個問題嗎?

+0

在Windows上工作我拿它? – Mike

+0

是的,Windows XP SP2,現在我知道爲什麼會發生這種情況。 –

回答

5

看起來像CR/LF線結束處理。使用「b」模式修飾符以二進制模式打開文件,即:

if (fp = fopen("test", "wb")) { 
    fp = fopen("test", "rb"); 
+0

非常感謝!這當然是問題所在。 –

0

它確實聞起來像CR/LF處理。原因是13是CR的ASCII碼......我會把它作爲二進制文件處理,讓你負責線結束問題!

+0

謝謝喬,我真的很感激! –