ファイル内の必要な位置に必要な文字列を追加するプログラムを作成しようとしています。プログラムを実行するときは、次のように呼び出す必要があります: ./addString file_name position text
たとえば、123456789 を含むファイルがあり、3 番目の位置に「hello」を追加すると、新しいファイルの内容は 123hello456789 になります (位置は 0 から数え始めます)。新しい文字列を 0 と 9 の位置に追加しようとすると問題が発生します。正しく追加されますが、最後に ^G や ^YÍ6 などの余分な文字列も追加されますが、その理由はわかりません。
これが私のコードです:
#include <stdio.h>
#include <stdlib.h>
main (int argc, char * argv[]){
if(argc == 4){
FILE *fd;
long size, rest;
char c;
fd = fopen(argv[1], "r+");
fseek(fd, 0, SEEK_END);
size = ftell(fd)-1 ;
rest = size - atoi(argv[2]);
char buffer[rest];
fseek(fd, atoi(argv[2]), SEEK_SET);
int i = 0;
while(i < rest){
c=fgetc(fd);
buffer[i] = c;
i++;
}
fseek(fd, atoi(argv[2]), SEEK_SET);
fprintf(fd, "%s", argv[3]);
fprintf(fd, "%s", buffer);
fclose( fd );
}
}