Đọc và ghi file trong C++

#include <iostream>
#include <stdlib.h>
#include <time.h>
// Chuong trinh tao random 10k so luu vao file1, roi sap xep luu vao file2
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
void Tao(int number);
void Doc(int Ds[], int &n);
void SapXep(int a[], int n);
void Xuat(int arr[], int n);
int main(int argc, char** argv) {
	srand(time(NULL));
	int n=10000;
	for(int i=0;i<n;i++){
		int number=1+rand()%32767;
		Tao(number);
	}
	int Ds2[11000];
	Doc(Ds2,n);
	SapXep(Ds2,n);
	Xuat(Ds2,n);
        for(int i=0;i<n;i++){
		int number=Ds2[i];
		Tao(number);
	}
	return 0;
}

void Tao(int number){
	FILE *file=fopen("SONGUYEN.txt","a");
		char str[10];
		itoa(number,str,10);
		fputs(str,file);
		fputs("\n",file);
	
	fclose(file);
}

void Doc(int Ds[], int &n){
	FILE *file=fopen("SONGUYEN.txt","r");
	int i=0;
	do{
		char *s="\n";
		char line[20];
		s=fgets(line,20,file);
		if (s!=NULL){
		int number=atoi(s);
		Ds[i++]=number;
		}
		else
		break;
	}
	while(true);
	n=i-1;
	fclose(file);
}

void SapXep(int a[], int n){
	for(int i=0;i<n-1;i++){
		for(int j=i+1;j<n;j++){
			if(a[i]>a[j]){ 
				int temp=a[i];
				a[i]=a[j];
				a[j]=a[i];
			}
		}
	}
}

void Xuat(int arr[], int n){
	for(int i=0;i<n;i++){
		cout<<arr[i]<<"\t";
	}
}

Ở đây em muốn tạo 10k số random lưu vào file 1 và lấy dữ liệu từ file 1 đó sắp xếp tăng dần rồi lưu vào file 2. Nhưng ko hiểu sao không được ạ! Mong các anh chị giúp em !

Hi NoName2k.

  1. Bạn xem lại cách format code khi đăng bài.
  2. Không được ở chỗ bào ? Bạn debug chưa ? Tên lửa của mình không bay được lên mặt trăng bạn xem giúp mình với.
1 Like

._____. Trước tiên bạn format lại code của bạn để mọi người dễ đọc.

//như thế này
int main() 
{
    return 0;
} 
1 Like

Dùng cấp phát động đi bạn, tràn stack rồi. :smile:

Trong hàm Tao()

Quá rờm rà. Đơn giản như thế này là xong:

fprintf(file, "%d\n", number);

Đây nữa:

Sửa: :point_down:

while (fscanf(file, "%d", &Ds[i++]) != EOF);

Còn hàm SapXep() do lượng phần tử lớn bạn có thể dùng Quick sort để sort. :slight_smile:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?