1

我正在尝试制作一个程序,将我想要的字符串添加到我想要在文件中的位置。运行程序时,必须像这样调用它: ./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 );

     }

}
4

0 回答 0