режим добавления +a
в fopen () помещает указатель дескриптора в конец файла. Ваш цикл fgets () потерпит неудачу, так как в конце файла не осталось ничего для чтения. Вы в основном делаете 19 ноу-хау. Затем ваш fwrite выведет ваше новое значение в конец файла, как и ожидалось.
Чтобы выполнить вставку, вам нужно rewind()
указать начало, а затем выполнить цикл fgets ().
Однако, если вы просто хотите, чтобы люди получили этот измененный файл, зачем беспокоиться о том, чтобы «открыть файл, просмотреть, записать изменения, отправить файл»? Это оставит множество дубликатов в вашей системе. Лучшим способом было бы разделить ваш файл на две части, и тогда вы могли бы сделать простое:
* * 1010
, что избавляет вас от необходимости каждый раз сохранять «новый» файл. Это также позволило бы вставки произвольной длины. Ваш метод fwrite может потенциально уничтожить более поздние части файла. например Вы сканируете со смещением «10» и записываете 4 байта, которые заменяют 4 исходных байта в этом месте исходного файла. В какой-то момент, возможно, он превращается в 5 байтов вывода, и теперь вы уничтожили байт в оригинале и, возможно, получили поврежденный файл.