01/10/2018, 12:06

Đọc dữ liệu từ file trên C++

Mình mới làm quen với việc làm việc cùng file. Nhưng giờ đang vướng 1 việc như sau.
Mình có 1 file tên vidu.txt lưu cùng thư mục với file .cpp. có bộ dữ liệu là

1 2 3 4 5 6 7 8 9 10

giờ muốn nhập dữ liệu này vào mảng thì làm thế nào vậy.
Mình cảm ơn

HK boy viết 14:10 ngày 01/10/2018
n = 0;
while (cin >> a[n]) n++;

// hoặc có thể thay bằng while(cin >> a[n++]){}
// nhưng mình không biết có chạy được không
Trình Bá Lân viết 14:21 ngày 01/10/2018

Đây là nhập dữ liệu từ file vào mà bạn, sao lại thế này ??

HK boy viết 14:10 ngày 01/10/2018

Oops, quên mất.

Nếu bạn mở file bằng freopen thì dùng luôn cin. Nếu dùng ifstream thì

ifstream fi;
// khai báo fi
while (fi >> a[n]) n++;

Còn nếu bạn mở file theo phong cách C thì bạn cũng làm tương tự.

Trình Bá Lân viết 14:10 ngày 01/10/2018

Mình thử vẫn không được. Bạn thử viết cả ra cho mình xem với. Đây là đề bài

HK boy viết 14:16 ngày 01/10/2018

Không được là không được như thế nào?

Trình Bá Lân viết 14:12 ngày 01/10/2018

chả có gì cả, dữ liệu phải nhập bằng tay, nó không tự đọc từ file

HK boy viết 14:21 ngày 01/10/2018

Bạn có thể up code lên không?

Trình Bá Lân viết 14:07 ngày 01/10/2018
>  #include < iostream>
>  #include < fstream>
> using namespace std;
> int main ()
> {
>     ifstream doc;
>     ofstream xuat;
>     int a[256];
>     doc.open ("vidu.txt");
>         int n = 0;
>         while (doc >> a[n]) n++;
>     doc.close ();
>     // xuât thử mảng
>     for ( int i = 0 ; i < 10; i++)
>     {
>         cout << a[i]<< " ";
>     }
>     return 0;
> }

file txt mình lưu cùng thư mục với file này. dữ liệu là 1 2 3 4 5 6 7 8 9 10

HK boy viết 14:20 ngày 01/10/2018

Mình tưởng file của bạn là vidu.txt chứ?

Mình có 1 file tên vidu.txt lưu cùng thư mục với file .cpp.

Bạn thử kiểm tra lại cú pháp mở file với chế độ đọc hay chưa.

Trình Bá Lân viết 14:22 ngày 01/10/2018

chế độ đọc hay chưa.

chế độ đọc là sao vậy ?

HK boy viết 14:12 ngày 01/10/2018

Chế độ đọc là file được mở sẵn để chuẩn bị đọc dữ liệu, con trỏ file ở đầu file.
Hình như bạn đang mở file ở chế độ ghi (file sẽ bị xoá hết nội dung cũ, chuẩn bị để ghi dữ liệu mới).

Trình Bá Lân viết 14:17 ngày 01/10/2018

cái xóa hêt dữ liệu cũ để ghi dữ liệu mới thì hình như là của ofstream chứ. Còn ifstream thì chỉ mở file để đọc thôi mà.
Mình thử dùng lệnh fail kiểm tra thì mở file thất bại

HK boy viết 14:17 ngày 01/10/2018

Thử sửa thành

if.open("vidu.txt", std::ifstream::in);

xem

Trình Bá Lân viết 14:18 ngày 01/10/2018

Và đây là kết quả

HK boy viết 14:19 ngày 01/10/2018

Mình cũng không hiểu tại sao.

File vidu.txt:

1 2 3 4 5 6 7 8 9 10 111

Code của mình:

#include <bits/stdc++.h>
using namespace std;

int n = 0;
int a[500];

int main() {
	ifstream fi("vidu.txt", ifstream::in);
	while (fi >> a[n]) n++;

	cout << n << endl;
	for (int i=0; i<n; i++) cout << a[i] << " ";
	cout << endl;

	fi.close();
}

Kết quả:

Bài liên quan
0