Buenas noches Laura C, ¡Bienvenida a DelphiAcess! Esperamos que esta comunidad se convierta en tu segundo hogar y te sientas cómda.
No soy el más indicado para asesorarte en tu duda ya que desconozco C, pero ya que uso algo de PHP y el lenguaje grand-mater de éste tiene sus orígenes en C es bastante probable que sea algo similar en algunos aspectos.
Por lo que estoy leyendo de esta página, para escribir en el archivo se debe de usar fputs() o bien fprintf(). Tu estás invocando a una printf().
Para leerlo se usa fgets(), y esta función por si misma va desplazandose. Es decir, si le indicas que lea 8 caracteres, después de invocarla ahora el cursor del archivo apuntará al 9vo. Si ahora lees 4, fgets() hará que el cursor del archivo apunte al 13vo.
Para leer el archivo completo necesitas un ciclo para iterar desde el comienzo hasta el final. Ahora bien, Hay dos alternativas:
1. Que antes de abrirlo, o bien, inmediatamente al abrirlo, leas el tamaño del archivo y vayas contando los bytes para saber si llegaste al final.
2. Hacer un ciclo que itere mientras no se haya llegado a fin de archivo leyendo la función eof().
EDITO:
Ahora bien, si quieres posicionarte en una "linea" en particular, la enorme mayoría de los lenguajes llaman a esta función seek, que para el caso de C y viendo el estilo de nomeclatura lo de esperarse es que ésta se llame fseek(). Es más es una de las formas (o quizá la única) de saber el tamaño del archivo es justamente hacer un seek() desde el final para hacer que el cursor este alli. El tamaño del archivo será el valor que regresa seek, más el tamaño en bytes del contenido del buffer que se pretende leer. Es decir, que si seek() nos devuelve 56, quiere decir que estamos en el byte 56-esimo y nuestro tamaño del buffer es 4 bytes el archivo es de 60 bytes.
Creo que el link que puse es lo suficiente ilustrativo.
De todas formas ya llegarán otros compañeros que estén más filosos y familiarizados con C y sepan guiarte.
Espero al menos haberte dado algún norte.
Saludos,