Amateur Member
|
這是用C寫的 希望對你有幫助~
1. 開檔 A 和 B 檔 並且讀去 array a 和 array b ..
if( (pTextFile=fopen(TEXT_FILE_PATH_AND_FILENAME, "r")) == NULL)
{
printf("\nProblem reading file: %s\n", TEXT_FILE_PATH_AND_FILENAME);
}
else if( (pTextFile2=fopen(SECOND_TEXT_FILE_PATH_AND_FILENAME, "r")) == NULL)
{
printf("\nProblem reading file: %s\n", SECOND_TEXT_FILE_PATH_AND_FILENAME);
}
else
{
iCharsReadFromFile = 0; //用來計算array 裡面總共有計個數字
iCharsReadFromFile2 = 0;
//開始讀取檔案A
while( cCharFromFile != EOF && iCharsReadFromFile < MAX_FILE_SIZE )
{
sTextFileContents[iCharsReadFromFile++] = cCharFromFile;
//一次讀一條int去array
fscanf(pTextFile,"%d",cCharFromFile );
}
//開始讀取檔案B
while( cCharFromFile2 != EOF && iCharsReadFromFile2 < MAX_FILE_SIZE )
{
sTextFileContents2[iCharsReadFromFile2++] = cCharFromFile;
cCharFromFile2 = fgetc(pTextFile2);
}
2 用merge function 把 兩個a 和 b array 合併起來 到c~
void merge(int [], int asize, int B[], int bsize, int C[], int csize) {
int ai, bi, ci, i;
ai = 0;
bi = 0;
ci = 0;
while ((ai < asize) && (bi <= bsize)) {
if (A[ai] <= B[bi]) {
C[ci] = A[ai];
ci++; ai++;
} else {
C[ci] = B[bi];
ci++; bi++;
}
}
if (ai >= asize)
for (i = ci; i < csize; i++, bi++)
C[i] = B[bi];
else
for (i = ci; i < csize; i++, ai++)
C[i] = A[ai];
}
3.比大小 array用 sort..
這裡偷懶 記得 #include <stdlib.h>
//c代表array 名稱,csize 代表array的大小
heapSort(c, csize);
4. 在array最後加個'\0'.. 忘記為什麼要這樣 老師教的
sResultTextFileContents[iCharsReadFromFile + iCharsReadFromFile2] = '\0';
5.. 用 fpintf() 來列印C 到新的檔案.
fprintf( stream, "%f\n", fp );
6.
關檔
fclose(pTextFile);// a檔
fclose(pTextFile2);//b檔
fclose(pResultFile);//c檔
|