2

ファイル (小さなアーカイブにしたい) を開こうとしていますが、その中の別のファイルの内容をコピーしたいと考えています。コードは次のとおりです。

FILE * arch;
FILE * par;

void read_words (FILE *f) 
{
char x[1024];
while (fscanf(f," %s",x)==1) 
   {
    fprintf(arch," %s", x);
   }
}

int main(int argc, char * argv[])
{
char * nome;
nome = argv[1];

archivio = scrivi(getcwd(NULL, 0), nome);
arch = fopen(archivio, "w+");

par = fopen(argv[2], "r+");

read_words(par);

return 0;
} 

「archivio」が作業パスであると想定してください。

次のように関数を呼び出します./a.out archiveName FilePath

私がしたいのは、このアーカイブを開いてから、いくつかfprintfの s (正常に動作するため、ここには示されていません) の後に別のファイルを開き、そのコンテンツをアーカイブに書き込むことだけです。
問題は関数 read_words にあります。単独で使用すると機能しますが (ここからコードを取得しました)、ここにそれを挿入すると、 にも入力されないため、機能しませんwhile (fscanf(f," %s",x)==1)。実際、アーカイブ ファイルは常に空です。

理由を教えていただけますか?

ありがとう

PS:これは私が挿入しようとしたテキストの例です:
La funzione mkbkp si occupa della creazione di un archivio contenente i file e le cartelle passate come parametri.

奇妙なことに、ac ファイルを read_words だけで作成すると、正常に動作します。

4

1 に答える 1