Принимая во внимание то, что опубликовал Baltasarq, я написал следующие строки. Вам нужно знать позицию, в которую вы хотите вставить символы
long Fin;
long lSize;
fseek(fd, 0L, SEEK_END);
Fin = ftell(fd);//I get the old file size
fseek(fd, position, SEEK_SET);//you should have declared and initialized "position"
char * buffer;
lSize = Fin - position;//lenght from where you want to insert the chars and the eof
buffer = (char*) malloc(sizeof(char) * lSize);
size_t result = fread(buffer, 1, lSize, fd);//fread (Fin - position) into buffer
fseek(fd, position, SEEK_SET);//fseek to position
fputs(word, fd);//you should know what you want to write (word) and it is a char pointer
fputs(buffer, fd);//fwrite the buffer
Я фактически использовал этот код (после некоторых модификаций) для дублирования слов, содержащих каждый гласный, в данном файле.