c - 如何在C中读取以二进制模式保存的数组到文本文件

标签 c io

我保存了一个字符串数组,如下所示:

char clientdata[5][128];
char buffer[256];
... input values into array ...
FILE *f = fopen("client.txt", "w+b");
fwrite(clientdata, sizeof(char), sizeof(clientdata), f);
... read the array from file ...
fclose(f);

现在我想从上面代码中的文件中读取数组。我尝试过:

fread(clientdata, sizeof(char), sizeof(clientdata), f);

然后我尝试在 clientdata 上使用 sprintf:

 sprintf(buffer,"%s",clientdata[1]);

这给了我错误:

request for member in clientdata not a structure or union

我做错了什么?

最佳答案

正如其他人所指出的,您没有提供任何内容来解释其中

request for member in something not a structure or union

可能来自,例如,在您的代码中,我们没有看到 buffer 在任何地方定义......无论如何:

强力方法:(按 ANSI C 中的方式编译、构建和运行)

#include <ansi_c.h>
#define newBinaryFile "C:\\tempExtract\\newbinaryfile.bin"
int main(void)
{
    FILE *fp;
    int i;
    char clientDataNew[5][128] = {"","","","",""};
    char clientdata[5][128] = {  "This string is 128 bytes longggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg1\n",
                                 "This string is 128 bytes longggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg2\n",
                                 "This string is 128 bytes longggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg3\n",
                                 "This string is 128 bytes longggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg4\n",
                                 "This string is 128 bytes longggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg5\n"};

    fp = fopen (newBinaryFile, "wb");

    fwrite(clientdata, sizeof(char), sizeof(clientdata), fp);
//  for(i=0;i<5;i++)
//  {
//      fputs(clientdata[i], fp);
//  }
    fclose (fp);

    fopen(newBinaryFile, "rb");

    fread(clientDataNew, sizeof(char),sizeof(clientdata),fp);

    for(i=0;i<5;i++)
    {
        (fgets (clientDataNew[i], 128, fp));
    }
    fclose(fp);
    for(i=0;i<5;i++)
    {
        printf("%s", clientDataNew[i]); 
    }
    getchar();
    return 0;   
}

关于c - 如何在C中读取以二进制模式保存的数组到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18599320/

相关文章:

c - 为什么 FFmpeg 代码不能在不同的 ARM 64 位平台上编译?

c - 如何在C/C++程序中包含SQL语句?

c - 在 C 中,动态分配的字符串文字的间接操作是如何真正工作的?

c - sizeof(&a[0]) 对于 int 数组 'a' 意味着什么?

c++ - 使用 Qt C++ 在 Linux 中获取通过 USB 连接的 ESC/POS 打印机的状态

linux - 如何解释 fio iops 日志文件?

c - 如何在c中将字符串从一维数组复制到二维数组?

java - BufferedReader 构造函数期望 FileReader 是什么

c - 使用 read() 和 write() 系统调用

java - 如何使用java更新和删除csv文件?