簡體   English   中英

在C中的文件中從數組寫入和打印字符串

[英]Writing and printing strings from an array in a file in C

我有一個數組寫入文件,但是當我調用函數時,我需要一種從文件中打印相同信息的方法。 代碼的第一部分在main函數中,第二部分是第二個函數,該函數打印出應該來自文件( fp )的值。

fp = fopen("Grue.txt", "wb");
for(i = 0; i < 5; i++)
{
    char newLine[3] = {"\n"};
    char space[2] = {" "};
    fwrite(array[i].name, strlen(array[i].name), sizeof(char), fp);
    fwrite(space, strlen(space), sizeof(char), fp);
    fwrite(array[i].height, strlen(array[i].height), sizeof(char), fp);
    fwrite(space, strlen(space), sizeof(char), fp);
    fwrite(array[i].weight, strlen(array[i].weight), sizeof(char), fp);
    fwrite(space, strlen(space), sizeof(char), fp);
    fwrite(array[i].items, strlen(array[i].items), sizeof(char), fp);
    fwrite(newLine, strlen(newLine), sizeof(char), fp);
}
fclose(fp);
fp = fopen("Grue.txt", "rb");
PrintAGrue(fp);


void PrintAGrue(FILE *a)
{
 // create End of file character onto the array being saved,
int i;
char n;
char h;
char w;
char m;

for (i=0; i<5; i++)
{
     n = fread(a[i].name,  strlen(array[i].name, sizeof(char), a);
     h = fread(array[i].height,  strlen(array[i].height, sizeof(char), a);
     w = fread(array[i].weight,  strlen(array[i].weight, sizeof(char), a);
     m = fread(array[i].items,  strlen(array[i].items, sizeof(char), a);

     printf("This grue is called %s and is %s feet tall, and weighs %s pounds, and has eaten %s things.", n, h, w, m);
}

}

PrintAGrue ,看起來您正在使用strlen()調用來決定要讀取多少數據-但是在讀取字符串之前如何知道字符串的大小? (此外,括號看起來不平衡...)

也許你的文件格式應明確包括長度字段每串-那么你可以做一個fread找到字符串大小,另一個實際讀取的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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