¿Cuál es la diferencia entre “rb +” y “ab” en fopen ()?

No entiendo la diferencia entre los modos "ab" y "rb+" al usar fopen() en C.

¿Por qué elegiría uno en lugar de otro?

Con los especificadores de modo arriba, el archivo está abierto como un archivo de texto. Para abrir un archivo como un archivo binario, debe incluirse un carácter "b" en la cadena de modo. Este carácter "b" adicional se puede agregar al final de la cadena (de esta manera se "wb" los siguientes modos compuestos: "rb" , "wb" , "ab" , "r+b “, "w+b" , "a+b" ) o se inserta entre la letra y el signo "+" para los modos mixtos ( "rb+" , "wb+" , "ab+" ).

De la documentación de fopen que te aconsejo leer antes de hacer preguntas. Le dará mucha información sobre posibles parámetros, valores de retorno, funciones similares, etc.

Además, desde el mismo documento:

"a" = añadir : abre el archivo para su salida al final de un archivo. Las operaciones de salida siempre escriben datos al final del archivo, expandiéndolo. Las operaciones de fseek ( fseek , fsetpos , rewind ) se ignoran. El archivo se crea si no existe.

"r+" = leer / actualizar : abre un archivo para actualizar (tanto para entrada como para salida). El archivo debe existir.