[英]why do I get random characters when applying file handling in C
我嘗試使用 fwrite 將我的結構傳遞給 txt 文件,但在我嘗試之后,我的 txt 文件中打印的 output 是隨機字符。 我不知道問題出在我的文本編輯器(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的內容可以打印的很整齊,並且可以在終端上顯示出來。
如果調用fwrite()
,memory 的“原始”圖像將寫入文件。 沒有翻譯或轉換為文本。
在眾多其他備選方案中,您可以根據此建議開始開發您的解決方案。
fprintf(fp, "nama=%s\nnim=%s\ngaji=%llu\nmatkul=%s\n", new_dosen.dsn.nama, new_dosen.dsn.nim, new_dosen.gaji, new_dosen.matkul);
如果需要,您可以將單個printf()
拆分為多個,以便更好地了解和維護。
fprintf(fp, "nama=%s\n", new_dosen.dsn.nama);
fprintf(fp, "nim=%s\n", new_dosen.dsn.nim);
fprintf(fp, "gaji=%llu\n", new_dosen.gaji);
fprintf(fp, "matkul=%s\n", new_dosen.matkul);
有關詳細信息,請閱讀系統的fprintf()
文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.