Hi, I am

Ngô Tôn

I am a programmer.

Home / Programming / C/C++ / Đọc ghi file nhị phân

Đọc ghi file nhị phân

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;
}
}
}
}

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Xây dựng hàm bạn để tính diện tích hình chữ nhật

Yêu cầu: Xây dựng hàm bạn để tính diện tích hình chữ nhật Code: Giải …

Leave a Reply

avatar
  Subscribe  
Notify of