1

fopen の "r+" モードを使用して、既存の .txt ファイル内の複数行のテキストに番号を追加しようとしています。これは機能していないようで、文字列 "line" の最初の反復とそれに続く大量のジャンク値を書き込むことになります。行頭にテキストを追加する方法はありますか? もしそうなら、私はこれに間違った方法で来ていますか?

また、まったく新しいファイルを作成することなく、これを実行しようとしています。

void main()
{
    char read = ' ';
    char buffer[25];
    char line[4] = "01."; //lines from 01 to 99
    FILE *file;
    file = fopen("readme.txt","r+");
    if (file == NULL)
    {
        printf("ERROR: Cannot open input file.\n");
        exit();
    }
    do
    {
        fwrite(line,strlen(line),1,file);
        read=gets(buffer);
        if(!feof(file)) // updating line numbers
        {
            if(line[1]<'9')
            {
                (line[1])++;
            }
            else
            {
                if(line[0]<'9')
                {
                    (line[0])++;
                }
                else
                {
                    exit();
                }
            }
        }
        else
        {
            exit();
        }
    }while(!(feof(file)));
    fclose(file);
    exit();
}
4

4 に答える 4

1

いいえ、あなたが望むことを行うポータブル/標準的な方法はありません。

ファイルはランダム アクセスですが、ファイルにデータを挿入することはできません。これは、他のすべてのデータを強制的に移動させるためです。これは、一般的なファイル システムでサポートされている操作ではありません。

最善の解決策は、次の 2 つの手順で行うことです。

  1. 入力を読み取り、出力を新しいファイルに書き込みます
  2. 新しいファイルの名前を変更して、元の入力を置き換えます
于 2013-05-08T10:36:24.790 に答える
0

ファイルの先頭に文字列を追加することは、挿入と同じです。
また、C を使用して文字列を直接挿入することはできません。代わりに、古いコンテンツを上書きします。
そのため、テキスト ファイルをオーバーホールすることしかできません。古いファイルの内容をどこかに記録し (一時ファイルやメモリなど)、文字列を書き込んで、古い内容を貼り付けます。

于 2013-05-08T10:38:57.987 に答える