C - 读取文件并将数据附加到另一个文件

时间:2013-05-06 20:29:31

标签: c printf

我正在尝试打开一个文件(想要成为一个小型存档),我想在其中复制另一个文件内容。代码如下:

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(正常工作,此处未显示)之后打开另一个文件并将其内容写入存档。
问题出在函数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.

奇怪的是,如果你制作一个只有read_words的c文件,它就能正常工作。

1 个答案:

答案 0 :(得分:1)

鉴于您描述程序行为的方式,我只能假设您没有阅读您想要阅读的文件。尝试使用此功能:

void show_file (const char *filename, FILE *out) {
    int c;
    FILE *file;
    fprintf(out, "%s(%s) BEGIN\n", __func__, filename);
    file = fopen(filename, "r");
    if (file) {
        while ((c = fgetc(file)) != EOF) {
            fputc(c, out);
        }
        fclose(file);
    } else {
        fprintf(out, "%s: failed to open file '%s' (%d)\n", __func__, filename, errno);
    }
    fprintf(out, "%s(%s) END\n", __func__, filename);
}

您可以从main这样调用此功能:

show_file(argv[2], stderr);

确保文件的路径和文件内容符合您的期望。