C语言将结构体写入文件,每行一个
时间: 2024-04-16 11:08:29 浏览: 103
可以使用fprintf()函数将结构体成员的值写入文件中,每行一个。
例如,假设有一个名为person的结构体,其中包含name、age和gender三个成员:
```
struct person {
char name[20];
int age;
char gender;
};
```
可以使用以下代码将该结构体写入文件中,每行一个:
```
#include <stdio.h>
int main() {
struct person p = {"John", 30, 'M'};
FILE *fp = fopen("person.txt", "w");
if (fp == NULL) {
printf("Failed to open file.\n");
return -1;
}
fprintf(fp, "%s %d %c\n", p.name, p.age, p.gender);
fclose(fp);
return 0;
}
```
此代码将创建一个名为person.txt的文件,并将p结构体的成员值写入该文件中,每行一个。%s、%d和%c分别表示字符串、整数和字符类型的格式化输出。在fprintf()函数中,字符串和字符类型的值需要用双引号括起来,而整数值不需要。最后,需要使用fclose()函数关闭文件流。
相关问题
C语言将结构体写入文件乱码
C语言将结构体写入文件乱码的问题通常是由于结构体中包含了指针或者非ASCII字符而导致的。在将结构体写入文件之前,需要将结构体中的数据进行序列化,以确保写入文件时数据的正确性。下面是一个处理这个问题的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义一个结构体
typedef struct {
int id;
char name[20];
} Person;
int main() {
FILE *file;
Person person = {1, "张三"};
// 打开文件
file = fopen("person.dat", "wb");
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
// 写入结构体数据
fwrite(&person, sizeof(Person), 1, file);
// 关闭文件
fclose(file);
printf("结构体已成功写入文件\n");
return 0;
}
```
在上述代码中,我们使用 `fwrite` 函数将结构体 `Person` 的数据写入到文件中。使用 `"wb"` 模式打开文件是为了以二进制的方式写入数据,确保数据的正确性。
阅读全文