usando fwrite () para escribir una estructura en un archivo

Tengo el siguiente programa:

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

#define MAXLEN 100

typedef struct {int key; char data[MAXLEN];} record;

main(int argc, char *argv[])
{
    int n, i;
    record x;
    FILE *fp;
    fp = fopen(argv[1], "w+");
    printf("How many records will be entered? \n");
    scanf("%d", &n);
    for (i=0; i<n; i++)
    {
        printf("Enter record: \n");
        scanf("%d", &x.key);
        scanf("%s", &x.data);
        fwrite(&x, sizeof(record), 1, fp);
    }
}

Lo que estoy haciendo es crear registros a partir de la entrada del usuario y luego almacenar estos "registros" en un archivo. Sin embargo, cuando uso fwrite (), el archivo que se crea tiene muchos caracteres extraños escritos, en lugar de tener cada registro con su clave y sus datos. ¿Alguien puede decirme por qué está escribiendo todos estos personajes extraños?

Respuestas a la pregunta(3)

Su respuesta a la pregunta