c - 用 C 将结构写入文件

标签 c file programming-languages pointers struct

我正在读取一个结构并将其写入一个不可读的文本文件中。我必须将可读数据从结构对象写入文件中。

这是我的代码的更多细节:

我的代码可以读取项目名称和代码列表并将其写入文件(file.txt)。该代码使用链表概念来读取和写入数据。 数据存储到结构体对象中,然后使用 fwrite 写入文件。

代码运行良好。但我需要将可读数据写入文本文件。

现在 file.txt 如下所示,

㵅㡸䍏䥔䥆㘸䘠㵅㩃䠀\䵏㵈䑜㵅㡸䍏䥔䥆㘸䘠\㵅㩃䠀䵏㵈䑜㵅㡸䍏䥔䥔㘸䘠㵅㩃䠀䵏㵈\䑜㵅㡸䍏䥔䥆㘸䘠㵅㩃䠀䵏㵈䑜㵅㡸䍏䥔\䥆㘸䘠㵅㩃䠀䵏㵈

我期望文件应该是这样的,

铅笔aaaa
表bbbb
笔cccc
笔记本nnnn

这是代码片段:

struct Item
{
char itemname[255];
char dspidc[255];
struct Item *ptrnext;
};

  // Writing into the file
printf("\nEnter Itemname: ");
gets(ptrthis->itemname);
printf("\nEnter Code: ");
gets(ptrthis->dspidc);
fwrite(ptrthis, sizeof(*ptrthis), 1, fp);

  // Reading from the file
while(fread(ptrthis, sizeof(*ptrthis), 1, fp) ==1)
{
  printf("\n%s %s", ptrthis->itemname,ptrthis->dspidc);
  ptrthis = ptrthis->ptrnext;
}

最佳答案

写入大小为 255 字节的数组将向文件写入 255 字节(无论您在该数组中填充了什么)。如果您只需要该数组的“文本”部分,则需要使用处理空终止符的工具(即 printffprintf ...)。

读取会更加复杂,因为您需要设置代表字符串结尾的标记值。

这并没有说明您正在写入的指针值(无论是否已初始化)在下次读取时将没有上下文或有效性。指针(即内存位置)仅在当前正在执行的进程中起作用。尝试在另一个进程中使用一个进程的内存地址绝对是一个坏主意

关于c - 用 C 将结构写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317069/

相关文章:

C/unix 套接字 : Segmentation fault (core dumbed) due to char pointer(? )

c - 错误 C2003 : expected 'defined id'

c - &a 与 *a 的大小

python - 在 Python 中跨多个文件使用和设置全局变量

java - 如何筛选特定类型文件/响应的 URL?

programming-languages - 内存、解释器和闭包

c - 柔性规范 yytext

java - .wav 声音无法在 Java 中播放

php - PHP语言结果是C吗?

language-agnostic - 为了理解不同的方法和概念,需要学习哪些重要的语言?