我正在尝试创建一个程序,将我想要的字符串添加到文件中我想要的位置。运行程序时,必须像这样调用它: ./ addString file_name位置文字
例如,如果我有一个包含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 );
}
}