0

私は今 C に精通しており、別のファイル (システム) 内の特定のファイルまたは文字列を削除する際に少し問題があります。

私が本質的に行っているのは、ファイルを追加、検索、または削除できる仮想ファイルシステムを構築することです。

最後の部分が機能していないようで、Googleは使用可能な結果を​​提供しません(「cでファイルを削除する方法」)。

私がこれまでに得たもの:

void deleteFILE(){
FILE *f = fopen ("myfilesystem.nfo", "r+");
if(f == 0) {
    perror("DANGER");
    return;
}
    char *del;
    printf (" You deleted the file: %s", del);

}

誰かが私を助けてくれたり、正しい方向に向けてくれたら最高です。

4

1 に答える 1

1

ファイルからコンテンツを削除する方法を尋ねています。次の 2 つのシナリオがあります。

  1. ファイルのあるポイントから最後までコンテンツを削除する場合は、POSIX システムを使用している場合はtruncateorを使用できます。ftruncate非 POSIX システムには、このタスクを実行する同様の機能がありますが、私の知る限り、ファイルを切り詰める C 標準ライブラリには何もありません。

  2. ファイルの途中からコンテンツを削除したい場合は、削除された部分の上に削除された部分に続くファイルの内容をコピーする必要があります。次に、ファイルを新しい長さに切り詰める必要があります。

これを明確にするための例として、このファイル:

住所: 0123456789
ファイルの内容: abcdefghij

バイト 7 ~ 9、hij を削除したいとします。次に、単純にファイルを切り捨てて長さ 7 にします。これが上記のシナリオ 1 です。

バイト 2 ~ 6 の cdefg を削除する場合は、次のようにします。

  • バイト 7 ~ 9 を位置 2 にコピーします。
  • ファイルの長さを 5 に切り詰めます。
于 2013-09-24T14:54:18.507 に答える