Viết chương trình tạo tập tin nhị phân chứa 100 số nguyên bất kỳ ghi vào file nhị phân SONGUYEN.INP. Sau đó viết chương trình đọc file SONGUYEN.INP, sắp xếp theo thứ tự tăng dần và lưu kết quả vào file text SONGUYEN.OUT.
/************************************************************/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
bool WriteFileBinary();
bool ReadFileBinary(int **buff);
bool WriteFileText(int *buff);
void BubbleSort(int **buff);
#define MAX_LEN 100
void main()
{
int buff[MAX_LEN];
int *pBuf = buff;
if (!WriteFileBinary())
{
goto EXIT;
}
if (!ReadFileBinary(&pBuf))
{
goto EXIT;
}
BubbleSort(&pBuf);
if (!WriteFileText(buff))
{
goto EXIT;
}
printf("\nSucessfull!!!");
EXIT:
getch();
}
/************************************************************
* Function: WriteFileBinary()
* Description: Generate randomize number by using rand(), then
write to binary file SONGUYEN.INP
* Return: true if write successfully, false if write fail
*************************************************************/
bool WriteFileBinary()
{
FILE *fp = NULL;
int idx;
int buff[MAX_LEN];
fp = fopen("D:\\SONGUYEN.INP", "wb");
if (!fp)
{
printf("\nError in opening file");
return false;
}
//Generate randomize number
for (idx = 0; idx < MAX_LEN; idx++)
{
buff[idx] = rand();
}
// Write data to SONGUYEN.INP file
if (fwrite(buff, sizeof(buff), 1, fp) < 1)
{
printf("\nError in writing SONGUYEN.INP file");
return false;
}
fclose(fp);
return true;
}
/************************************************************
* Function: ReadFileBinary()
* Description: Read data from SONGUYEN.INP file
* Return: true if read successfully, false if read fail
*************************************************************/
bool ReadFileBinary(int **buff)
{
FILE *fp = NULL;
fp = fopen("D:\\SONGUYEN.INP", "rb");
if (!fp)
{
printf("\nError in opening file");
return false;
}
if (fread(*buff, MAX_LEN*sizeof(int), 1, fp) < 1)
{
printf("\nError in reading SONGUYEN.INP file");
return false;
}
fclose(fp);
return true;
}
/************************************************************
* Function: WriteFileText()
* Description: Write data to text file SONGUYEN.OUT
* Return: true if write successfully, false if write fail
*************************************************************/
bool WriteFileText(int *buff)
{
FILE *fp = NULL;
int idx;
fp = fopen("D:\\SONGUYEN.OUT", "w");
if (!fp)
{
printf("\nError in opening file");
return false;
}
// Write data to SONGUYEN.OUT file
for (idx = 0; idx < MAX_LEN; idx++)
{
fprintf(fp, "%d\t", buff[idx]);
}
fclose(fp);
return true;
}
/************************************************************
* Function: BubbleSort()
* Description: Sort number of array in ascending order by
using bubble sort
* Return: void
*************************************************************/
void BubbleSort(int **buff)
{
int idx, idx1;
int temp;
for (idx = 0; idx < MAX_LEN - 1; idx++)
{
for (idx1 = idx + 1; idx1 < MAX_LEN; idx1++) { if ((*buff)[idx] > (*buff)[idx1])
{
temp = (*buff)[idx];
(*buff)[idx] = (*buff)[idx1];
(*buff)[idx1] = temp;
}
}
}
}
Leave a Reply