¿Fseek () mueve el puntero del archivo al comienzo del archivo si se abrió en modo "a + b"?

Deseo abrir un archivo usando el modo "a + b", es decir, si no existe, se crea automáticamente, pero si lo hace, no quiero sobrescribirlo. Quiero poder leer y escribir en el archivo.

l archivo es binario y quiero guardar registros de un @ específistruct en eso. Entonces quiero hacerfseek() al registro que quiero y luego guardar el registro usandofwrite().

El código tiene el siguiente aspecto MyRecord es untypedef a unstruct, mientrasFILENAME es un#define al nombre del archivo):

int saveRecord(MyRecord *pRecord, int pos)
{
    FILE* file = fopen(FILENAME, "a+b");
    if (file == NULL)
    {
        printf("Unable to open file %s\n", FILENAME);
        return 0;
    }

    fseek(file, pos * sizeof(MyRecord), SEEK_SET);
    fwrite(pRecord, sizeof(MyRecord), 1, file);
    fclose(file);
    return 1;
}

in embargo, este código solo agrega el registro al final del archivo, incluso si configuropos a 0. ¿Por qué no esfseek() conSEEK_SET trabajando en modo agregar?

Sé que simplemente puedo abrirlo con "r + b" y, si falla, abrirlo con "wb", pero quiero saber por qué esto no funciona y por quéfseek() conSEEK_SET deja el puntero del archivo al final. Se aprecia cualquier referencia a lugares donde se documenta este comportamiento (porque no pude encontrar ninguna o estoy usando las palabras clave incorrectas).

Respuestas a la pregunta(3)

Su respuesta a la pregunta