【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19286

ファイルに文字列を追加
投稿者---しんた(2005/01/18 01:25:30)


ファイルの任意の位置に文字列を追加したいのですがやりかたがわかりません。
例えば test.txt で、すべての行末で改行し、
012345
abcdefgh
stuvwxyz
として、1行目に6789を追加して、
0123456789
abcdefgh
stuvwxyz
としたいとします。
そこで、したのプログラムを実行しても
0123456789cdefgh
stuvwxyz
にしかなりません。
どうすればよいのでしょうか?
#include <stdio.h>
#define RECORDLEN 6
int main()
{
    char buf[]="6789";
    FILE *fp;
        fp = fopen("test.txt","r+");
        fseek(fp,RECORDLEN,SEEK_SET);
        fprintf(fp,buf);
        fclose(fp);
    return 0;
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイルに文字列を追加 19289 επιστημη 2005/01/18 07:15:25
<子記事> Re:ファイルに文字列を追加 19305 かずま 2005/01/18 22:31:06


No.19289

Re:ファイルに文字列を追加
投稿者---επιστημη(2005/01/18 07:15:25)


>ファイルの任意の位置に文字列を追加したいのですがやりかたがわかりません。

ファイルはカセットテープと同じ。書き換えはできますが'挿入'はできません。
ではどうやるかというと、やはりカセットテープと同じ。
テープをもう一本用意します。


この投稿にコメントする

削除パスワード

No.19305

Re:ファイルに文字列を追加
投稿者---かずま(2005/01/18 22:31:06)


> ファイルの任意の位置に文字列を追加したいのですがやりかたがわかりません。

ファイルが小さければ、後ろの部分をメモリーに読み込むという手もあります。
#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;
}



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧