gpt4 book ai didi

c - 如何合并N个文件

转载 作者:行者123 更新时间:2023-11-30 20:38:26 25 4
gpt4 key购买 nike

我有N个文件,例如每个文件的每一行都有唯一的单词和单词数

file1      file2     file3  
the 2 black 3 red 4
apple 4 tree 2 crab 6
snake 3 mantle 8 puppet 1

如何将这些文件按排序顺序合并到一个文件中,提前致谢,真的需要一个想法。

void *doMerge(void* arg){
int i,j,p = 0, k = 0;
char*min = malloc(sizeof(char)*256);
FILE *f = fopen("fileFinal","w+");
char **StringBuffer = (char **)malloc(sizeof(char*)*R);
int *IntBuffer = malloc(sizeof(int)*R);
for(i=0; i < R; i++){
rewind(temp2[i]);
StringBuffer[i] = (char *)malloc(sizeof(char)*256);
if(fscanf(temp2[i],"%s %d",StringBuffer[i],&IntBuffer[i]) == 1)
printf("String is %s and int is %d\n",StringBuffer[i],IntBuffer[i]);
}

while(1){
strcpy(min, StringBuffer[0]);
for(j=0 ; j < R-1; j++){
if(strcmp(StringBuffer[j+1],StringBuffer[j]) <= 0){
strcpy(min,StringBuffer[j+1]);
p = j+1;
}
}fprintf(f,"%s %d\n",min, p);
if(fscanf(temp2[p],"%s %d",StringBuffer[p],&IntBuffer[p]) == 1){}
k++;
}

};

最佳答案

while(1)
{
strcpy(min, StringBuffer[0]);
for(j=0 ; j < R-1; j++){
if(strcmp(StringBuffer[j+1],StringBuffer[j]) <= 0)
{
strcpy(min,StringBuffer[j+1]);
p = j+1;
}
}
fprintf(f,"%s %d\n",min, p);
if(fscanf(temp2[p],"%s %d",StringBuffer[p],&IntBuffer[p]) == 1)
{}
k++;
}

那个while循环有许多不同的问题

1) p需要初始化为0之前for循环
2)strcmp应该比较minStringBuffer[j] ,这也意味着
2a) for循环应该是 for(j=1;j<R;j++) ,以及
2b) strcpy(min,StringBuffer[j+1]);应该是strcpy(min,StringBuffer[j]); ,以及
2c) 行p=j+1应该是p=j
3)k不用于任何用途,应将其删除

但最重要的是fscanf 。您应该检查fscanf返回2 。如果没有,则文件已完成,您需要跟踪文件已完成的事实,并且不应在 for 中检查该文件。不再循环。

关于c - 如何合并N个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com