0

このコードを実行すると、「メール」入力を取得するための最終的な scanf 関数が実行されず、「正常に更新されました!」というメッセージが表示されます。直接メッセージを!gets()scanf の代わりに使用してみましたが、同じ問題が発生しています。誰かが私に問題を説明してもらえますか?

出力イメージ

#include <stdio.h>
#include <stdlib.h>

typedef struct Directory
{
    char name[20], email[20];
    long int phone;
}Directory;

void add()
{
    Directory d;
    FILE *file;
    file = fopen("phonebook.bin", "ab");
    if(!file)
        printf("Failed to open file!");
    else
    {
        printf("Enter the name: ");
        scanf("%[^\n]", &d.name);
        printf("Enter the Phone Number: ");
        scanf("%ld", &d.phone);
        printf("Enter the e-mail ID: ");
        scanf("%[^\n]", &d.email);
        if(fwrite(&d, sizeof(Directory), 1, file))
            printf("Updated successfully!");
        else
            printf("Something went wrong, Please try again!");
    }
    fclose(file);
}

int main()
{
    add();
}
4

1 に答える 1