我保存了一个字符串数组,如下所示:
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/