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

User Rating: 5 ( 1 votes)

About ngoton

Ngô Tôn is a programmer. He is crazy about new gadgets and up to date with latest technology trends. Use comments to notify any issues you are facing.

Check Also

Xây dựng một lớp Time mô tả thông tin về giờ, phút giây

Yêu cầu: Xây dựng một lớp Time mô tả thông tin về giờ, phút giây. …

Leave a Reply

Your email address will not be published. Required fields are marked *