2012-08-26 68 views
1

代碼寫作結構中的.dat文件

struct Student 
{ 
unsigned int ID; 
char name[256]; 
int FileLocLeft; 
int FileLocRight; 
int FileLocParent; 
}; 

void main() 
{ 
Student CurStudent; 

FILE* fp = fopen("d:\\students.bat", "w"); 
if(fp == NULL) 
{ 
    printf("File not found\n"); 
} 
else 
{ 
    fseek(fp,0,SEEK_SET); 
    CurStudent.FileLocLeft = 0; 
    CurStudent.FileLocParent = 0; 
    CurStudent.FileLocRight = 0; 
    CurStudent.ID = 0; 
    CurStudent.name = "Root"; 
    fwrite(CurStudent,sizeof(Student),1,fp); 
} 
} 

我有兩個錯誤的麻煩,一個是我不能將 「根」(爲const char [15])來命名(焦[256])和當使用fwrite時,我得到「不能將參數1從'Student'轉換爲'const void'」

+1

不要寫'void main()';它返回一個'int'。除非使用C99或C11,否則需要在'main()'末尾明確添加'return 0;'。 –

+1

另外,您應該檢查數據是否寫入成功。知道數據文件是否乾淨至關重要。 –

回答

3

你不能像C那樣分配數組,並且fwrite需要一個指針,你不能傳遞一個結構體。如何:

strcpy(CurStudent.name, "Root"); 
fwrite(&CurStudent, sizeof(CurStudent), 1, fp); 
    ^
2
  1. 字符串不超過char數組。 C中有特殊功能,以str開頭,並幫助處理這些問題。
  2. 獲取結構變量的地址,fwrite需要一個指向數據的指針。