|
> ファイルの任意の位置に文字列を追加したいのですがやりかたがわかりません。
ファイルが小さければ、後ろの部分をメモリーに読み込むという手もあります。
#include <stdio.h>
#include <stdlib.h>
#define RECORDLEN 6
int main(void)
{
long pos;
char buf[] = "6789", *p;
FILE *fp = fopen("test.txt", "rb+");
if (fp == NULL) { puts("can't open test.txt"); return 1; }
fseek(fp, 0, SEEK_END);
pos = ftell(fp);
p = malloc(pos - RECORDLEN);
if (p == NULL) { puts("out of memory"); return 1; }
fseek(fp, RECORDLEN, SEEK_SET);
fread(p, 1, pos - RECORDLEN, fp);
fseek(fp, RECORDLEN, SEEK_SET);
fputs(buf, fp);
fwrite(p, 1, pos - RECORDLEN, fp);
free(p);
fclose(fp);
return 0;
}
|