用c逐行写入文件

时间:2013-12-07 15:39:46

标签: c file file-io

我有一个关于将文字写入文件的问题。需要将来自文件的单词写入名为temp2-i的中间文件。在这里,我根据单词长度进行更改。

这是我的代码:

 while(!feof(args->file))
{
    if(EOF!=fscanf(args->file,"%s",word))
    {
        //create intermediate file name as tempj-i
        sprintf(str, "%d", j);
        sprintf(str2 , "%d" , i);

        strcpy(result , "temp");
        strcat(result, str);
        strcat(result , "-");
        strcat(result, str2);

        //create intermediate file
        destFile = fopen(result , "w"); --> here is problem
        if (destFile== NULL) {
            printf("Error in opening a file..", destFile);
        }

        fprintf(destFile , "%s", word);
        fprintf(destFile ,"%s" , " ");

        fclose(destFile);
        count++;


    }
}

  fclose(args->file);
  pthread_exit(0);
}

我的问题是,即使有很多单词要写入同一个中间文件,最后只写入其中一个。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

看起来你每次都在循环中打开文件。据推测,你想在循环外只打开一次,并多次写入它。

答案 1 :(得分:1)

您将分别打开每个单词的文件。如果这是故意的(为什么?)你将不得不使用" wa"作为开放模式。如果这不是故意的,你应该在循环外打开文件,并在循环退出时关闭它。

destFile = fopen(result , "w"); --> here is problem

必须是

destFile = fopen(result , "wa");

这将导致写入在写入之前到达文件末尾,附加新数据。