我遇到了一些問題,試圖運行這個程序,我正在努力......要求說我不被允許使用排序功能...我自己做了一些事情....等等。C程序合併文件未找到EOF,陷入無限循環!
好看多了,程序編譯,但執行掛起後......我猜它是停留在一個無限循環......但我似乎無法找到它... :(
這個程序讀取該會已經至少責令其最大的數據文件,將它們合併(有序)到第三個txt文件...
的兩個文件是DATA1.TXT和Data2.txt 包含:
數據1 .txt
2
2
2
2
Data2.txt
1
3
5
7
9
combine.c
#include <stdio.h>
#include <stdlib.h>
void sortData(FILE *fpData1, FILE *fpData2)
{
int n, m;
FILE *fpMerge;
fpMerge = fopen("Merge.txt", "w+");
fscanf(fpData2, "%i", &n);
fscanf(fpData1, "%i", &m);
while(n != EOF || m != EOF)
{
if(n == EOF)
{
fscanf(fpData1, "%i", &m);
while(m != EOF)
{
fprintf(fpMerge, "%i\n", m);
fscanf(fpData1, "%i", &m);
}
}
if(m == EOF)
{
fscanf(fpData2, "%i", &n);
while(n != EOF)
{
fprintf(fpMerge, "%i\n", n);
fscanf(fpData2, "%i", &n);
}
}
if(n < m)
{
fprintf(fpMerge, "%i\n", n);
fscanf(fpData2, "%i", &n);
}
if(n > m)
{
fprintf(fpMerge, "%i\n", m);
fscanf(fpData1, "%i", &m);
}
if(n == m)
{
fprintf(fpMerge, "%i\n", n);
fprintf(fpMerge, "%i\n", m);
fscanf(fpData2, "%i", &n);
fscanf(fpData1, "%i", &m);
}
}
fclose(fpMerge);
}
int main (void)
{
FILE *fpData1;
FILE *fpData2;
fpData1 = fopen("Data1.txt", "r");
if(fpData1 == NULL)
{
printf("There was an error opening the file...program terminating..\n");
exit(1);
}
fpData2 = fopen("Data2.txt", "r");
if(fpData2 == NULL)
{
printf("There was an error opening the file...program terminating..\n");
exit(1);
}
sortData(fpData1, fpData2);
fclose(fpData1);
fclose(fpData2);
return 0;
}
_「...我猜這是......」_你是否附加了一個調試器來查看你的程序在做什麼?您是否嘗試添加一些正確的調試輸出語句(使用'printf')來查看它出錯的位置? – 2010-09-08 05:43:52
我添加了一些printf的,它似乎程序沒有在文件中移動...它停留在第一個數字,並永遠...有沒有更好的方法來移動指針...因爲我真的不知道...我之前用fscanf做過,我沒有看到我做錯了什麼.. – Bri 2010-09-08 06:07:29