C语言 在正文的特定位置插入词语

pbpqsu0x  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(114)

我有两个.txt文件;第一个有一些包含数字和单词的行,另一个有一些文本。我必须读取数字n和一个单词,并在另一个文件中从位置n开始写入单词。我写的代码只是把所有的单词都写到最后,我不知道如何修复它。

osAssert(3 == argc, "argc");
    struct stat fInfo;
    osAssert(-1 != stat(argv[1], &fInfo), "stat");
    osAssert(S_ISREG(fInfo.st_mode), "prvi fajl nije reg");
    osAssert(-1 != stat(argv[2], &fInfo), "stat");
    osAssert(S_ISREG(fInfo.st_mode), "drugi fajl nije reg");

    FILE *f1 = fopen(argv[1], "r");
    osAssert(NULL != f1, "open");
    FILE *f2 = fopen(argv[2], "a");
    osAssert(NULL != f2, "open2");
    rewind(f2);
    int fd = fileno(f2);

    int n;
    char rec[MAX];
    while(EOF != fscanf(f1, "%d %s", &n, rec)){
        printf("%d %s ", n, rec);
        osAssert(-1 != fseek(f2, n, SEEK_SET), "fseek");
        osAssert(-1 != write(fd, rec, strlen(rec)), "write");
    }

    fclose(f1);
    fclose(f2);

osAssert函数只是检查条件是真还是假,如果不是,就停止程序。

xuo3flqw

xuo3flqw1#

如果你想覆盖文件的一部分,而其他的一切都保持原样,你可以以“r+"打开目标文件。这将打开文件,而不截断它,并将“光标”放置在偏移量0处,具有读写能力。
然后,在fopen-ing文件后,fseek到你想写的位置,fwrite你的数据在那里。
请看下图,了解所有可能的打开模式(从this SO post开始):

相关问题