簡體   English   中英

為什么我在 C 中應用文件處理時得到隨機字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM