2013-04-23 85 views
1

我需要幫助將文本文件轉換爲C的二進制文件我不能繼續我的程序,即使我寫了一半,因爲我不知道是否打印任何值。轉換需要人,動物的最大長度,寬度,長度和字符串。基本上我正在寫的程序讀取二進制數據庫文件並返回滿足搜索的所有值。感謝您的幫助文本到二進制數據庫

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

typedef struct{ 
int max; 
double length, width; 
char people; 
} max_t; 

int 
main() 
{ 
FILE *database; 
int inp, out; 

     database = fopen("database.txt", "r"); 
    fscanf(database, "Max : %d", &max); 
    fscanf(database, "Width : %lf", &width); 
    fscanf(database, "Length : %lf", &length); 
    fscanf(database, "People : %s", &people); 
    fwrite(&max, 1, sizeof(max), database); 
    fwrite(&width, 1, sizeof(width), database); 
    fwrite(&length, 1, sizeof(length), database); 
    fwrite(&people, 1, sizeof(people), database); 
     database = fopen("out.txt", "wb"); 

return(0); 
} 
+3

歡迎,並請學會如何先問一個適當的問題,這樣你會得到有用的回覆。 http://stackoverflow.com/questions/how-to-ask你不顯示任何代碼,或任何有價值的東西可以幫助別人幫助你。 – OldProgrammer 2013-04-23 00:43:21

+0

謝謝你的歡迎。我沒有轉換代碼,因爲我的書很模糊。我一直在搜索stackoverflow和其他網站的高和低,沒有任何使用已經顯示出來。它似乎只是一個簡單的I/O,需要文本並返回與這些子字段的二進制文件,但我無法將其包圍。 – Hamas4 2013-04-23 00:45:06

+1

顯示你擁有的並從那裏拿走它。 – 2013-04-23 00:46:06

回答

0

你犯了一些愚蠢的錯誤。您不會在輸出文件中寫入任何內容,但可以寫入輸入文件,並以「只讀」模式打開!

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

typedef struct s{ 
int max; 
double length, width; 
char people[10]; 
} max_t; 

int main() 
{ 
    FILE *database, *out; 
    //int inp, out; 
    max_t inp; 
    database = fopen("database.txt", "r"); 
    out = fopen("out.txt", "wb"); 
    fscanf(database, "Max : %d", &inp.max); 
    fscanf(database, "Width : %lf", &inp.width); 
    fscanf(database, "Length : %lf", &inp.length); 
    fscanf(database, "People : %s", inp.people); 
    fwrite(&inp.max, 1, sizeof(inp.max), out); 
    fwrite(&inp.width, 1, sizeof(inp.width), out); 
    fwrite(&inp.length, 1, sizeof(inp.length), out); 
    fwrite(inp.people, 1, sizeof(inp.people), out);  
    fclose(database); 
    fclose(out); 
    return(0); 
} 

編輯:見主()&結構

+0

我認爲這是做r/w:/我的壞。我做了上面提出的修改,但是我得到的錯誤告訴我這樣的警告:傳遞'fwrite'的arg 4使得整形指針沒有投射,但我正在努力解決此問題。謝謝 – Hamas4 2013-04-23 03:26:21

+0

@ Hamas4:我編輯了我的main()。我忘了使用結構:) – 2013-04-23 03:35:42

+0

謝謝!這聽起來很愚蠢,但是爲什麼我的結構沒有在主體中找到?它一直告訴我,最大,寬度,長度,人們都未申報。 – Hamas4 2013-04-23 03:50:44

0

如果你需要做的是將數據放入二進制格式的文件,然後讀取它在以後你可以在stdio.h轉儲原始字節到一個文件與fwrite

要讀取該數據,您可以使用fread

當您使用frwite將字節放置到文件中時,您只需記住稍後讀取它們時代表什麼字節。

例txt文件:

width : 2 
height : 3 

3 1 
2 3 
2 1 

你可以用一對夫婦的fscanf調用在2和3閱讀:

// fp -- FILE * -- file pointer 
fscanf(fp, "width : %d", &width); 
fscanf(fp, "height : %d", &height); 

然後以二進制格式寫入這些值,你可以這樣做:

frwite(&width, 1, sizeof(width ), fp); 
frwite(&height, 1, sizeof(height), fp); 

讀入文件的其餘部分,並將其轉換爲二進制格式到另一個文件將是相同的流程。

+0

我知道我可以使用fwrite,因爲我在主程序中使用它,但是我是否在要轉換爲二進制文件的文件中使用fwrite? – Hamas4 2013-04-23 01:19:22

+0

您只需調用'frwrite'併爲其提供要放入文件的數據。它會將這些數據以二進制格式寫入文件中。您可以使用'fscanf'以文本格式讀取數據。我將編輯我的帖子並提供一個簡短的例子。 – RandyGaul 2013-04-23 01:21:06

+0

FP是什麼意思?我在我的書 – Hamas4 2013-04-23 01:28:52