我有一个关于将文字写入文件的问题。需要将来自文件的单词写入名为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);
}
我的问题是,即使有很多单词要写入同一个中间文件,最后只写入其中一个。我该如何解决这个问题?
答案 0 :(得分:1)
看起来你每次都在循环中打开文件。据推测,你想在循环外只打开一次,并多次写入它。
答案 1 :(得分:1)
您将分别打开每个单词的文件。如果这是故意的(为什么?)你将不得不使用" wa"作为开放模式。如果这不是故意的,你应该在循环外打开文件,并在循环退出时关闭它。
destFile = fopen(result , "w"); --> here is problem
必须是
destFile = fopen(result , "wa");
这将导致写入在写入之前到达文件末尾,附加新数据。