我试着用fwrite把我的struct传递到一个txt文件中,但是在我尝试之后,在我的txt文件中打印的输出是随机字符。我不知道是我的文本编辑器(VS Code 1.76)还是我的设备(Mac OS)出了问题。
检查我的github代码以获得完整的代码:https://github.com/fayzulhq/file-handling-for-public/commit/fca81c7868226f9b36787d32a6d76b59bef694f1
typedef struct staff
{
char nama[20];
char nim[10];
} staff;
typedef struct dosen
{
staff dsn;
unsigned long long int gaji;
char matkul[20];
} dosen;
//...
void insert()
{
char nama[20], nim[10];
int status;
fflush(stdin);
printf("Masukkan nama :");
scanf("%[^\n]s", nama);
printf("Nim :");
scanf("%10s", nim);
puts("\nDosen.........1\n");
puts("Mahasiswa.....2\n");
printf("Status :");
scanf("%d", &status);
if (status == 1)
{
FILE *fp = fopen("Dosen_kampus1.txt", "a");
if (fp == NULL)
{
puts("Maaf file tidak dapat diakses!\n");
}
dosen new_dosen;
char matkul[20];
unsigned long long int gaji;
printf("Masukkan Gaji : Rp");
scanf("%llu", &gaji);
fflush(stdin);
printf("Mata kuliah : ");
scanf("%[^\n]s", matkul);
strcpy(new_dosen.dsn.nama, nama);
strcpy(new_dosen.dsn.nim, nim);
strcpy(new_dosen.matkul, matkul);
new_dosen.gaji = gaji;
fwrite(&new_dosen,sizeof(dosen),1,fp);
fclose(fp);
system("clear");
puts("Data baru berhasil ditambahkan!\n");
}
我希望在我的txt文件中,struct的内容能打印得整整齐齐,并能在终端上显示出来。
1条答案
按热度按时间nue99wik1#
如果调用
fwrite()
,内存中的“原始”图像将被写入文件,而不会转换为文本。在许多其他选择中,您可以使用此建议开始开发您的解决方案。
如果需要,您可以将单个
printf()
拆分为多个,以便更好地查看和维护。有关详细信息,请阅读系统的
fprintf()
文档。