Lỗi khi đọc dữ liệu từ file vào chương trình trong C?

Hôm nay em có học cách xử lý tập tin trong C. Mà gặp lỗi mong mọi người giúp em !
Code:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <Windows.h>
#include <limits.h>
int main()
{
	int a, b;
	FILE *FileIn; // khai báo
	// mở tập tin
	FileIn = fopen("INPUT.txt", "r");
	fscanf(FileIn, "%d", &a);
	fscanf(FileIn, "%d", &b);

	// đóng tập tin
	fclose(FileIn);
	printf("\na = %d\t b = %d\n", a, b);
	getch();
	return 0;
}

Hình ảnh lỗi:

Còn đây là hình ảnh nội dung trong file:

P/S: Cái file đó em tạo nó ngay trong thư mục của Project luôn, tức là ở cùng với file souce.cpp nên không cần đường dẫn mà chỉ để INPUT.txt , vậy mà nó vẫn lỗi và không hiểu vì sao ? Cái tên file em cũng ghi đúng nữa , mọi người giúp em nhé, thanks nhiều :smiley:

3 Likes

Có ai giúp em không ạ ? Em đang cần gấp lắm vì sắp thi òi :frowning:

1 Like

Học kỳ 2 mà vẫn còn học Nhập môn hả bạn.
VS 2015 nó có thay đổi cú pháp một số hàm. Đây là code của mình

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <Windows.h>
#include <limits.h>
int main()
{
	int a, b;
	FILE *FileIn; // khai báo
				  // mở tập tin
	fopen_s(&FileIn,"F:/INPUT.txt", "r");
	fscanf_s(FileIn, "%d", &a);
	fscanf_s(FileIn, "%d", &b);

	// đóng tập tin
	fclose(FileIn);
	printf("\na = %d\t b = %d\n", a, b);
	_getch();
	return 0;
}
1 Like

Mình chạy thấy bt không lỗi gì :slight_smile:

1 Like

Sao cái VS 2015 của mình nó nói không có thư viện này nhỉ ?

Sao mình để cái &FileIn ở trong thì nó báo lỗi ở chỗ "r"too many arguments in function call
Nói chung mình vẫn chưa sửa được, bạn xem lại giùm mình nha :smiley:

Kỳ nhỉ ? Khi mình chạy đoạn code trên trên VS 2015 thì nó báo lỗi như cái hình, còn chạy trong codeblocks thì nó không báo lỗi nhưng khi console screen hiện ra, 2 giá trị của ab là giá trị rác, không đúng với 2 giá trị có trong file.txt (là 6 và 9)

1 Like

Mà nói thêm là trong Microsoft Visual Studio 2015 thì đúng là không dùng printfscanf thường được nhưng mình sửa lại rồi :slight_smile:

Nên giờ dùng printf , scanf cũng như fopen … đều được hết :smiley: Còn cái lỗi trên thì không biết do cái gì nữa :sob:

1 Like

This post was flagged by the community and is temporarily hidden.

1 Like

Tại mình tạo Console Project chứ không phải Empty Project
fopen_s có 3 đối số, còn fopen thì không.

2 Likes

Sao kì thế nhỉ. Trên lớp mấy đứa bạn dùng VS code bình thường mà ? Chỉ có mình gặp lỗi.

Câu này phải của chủ thớt viết mới đúng chứ

Hay tucanhminh và anonymous125 là một người?
Sinh năm 2003 thì thi cái gì nhỉ

2 Likes

Hehe, màu mè thôi mà, sơ suất rồi lộ hàng.
p/s: thông tin mình ghi trên wordpress sai rồi đó, năm 2000 :slight_smile:

1 Like

Ok, 2000 nếu bạn thích như vậy :smile_cat:

2 Likes

Vào vấn đề chính đi

1 Like

Bạn có chắc file INPUT.txt nằm cùng 1 nơi với file source.cpp không? Bởi vì lỗi này là do fopen trả về NULL (hoặc nullptr với C++11 trở lên) mà bạn lại sử dụng nó để fscanf cho a, b.

1 Like

Bạn dùng chức năng debug rồi step Over từng dòng, sẽ biết ngay lỗi ở chỗ nào :grin:
Với xóa file input đó đi, thay 1 file input mới, nhập số lại từ đầu (trong Notepad) rồi thử lại xem.

1 Like

Chắc chắn nó nằm cùng mà. Mình right click vào project rồi trỏ thẳng tới nơi chứa file source.cpp luôn, tức là chọn open containning folder in explorer …

1 Like

Vậy chắc do bạn đặt tên file text document là INPUT.txt. vì nó đã là file txt rồi nên bạn chỉ cần đặt tên là INPUT thôi.

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