Trích dẫn




Only a person who risks is truly free.


Ảnh

Ảnh

Thứ Năm, 18 tháng 12, 2014

Sự khác biệt giữa fgetc và fscanf

2 hàm fgetcfscanf thì đã quá quen thuộc rồi, đều là đọc một kí tự từ file nhưng tại sao lại phải tạo ra 2 hàm ... cái này mình cũng không biết :D
Có 2 điểm khác biệt mà mình nhận ra khi sử dụng
+Thứ nhật: Đó chính là cú pháp, cụ thể: fgetc(<con trỏ>), fscanf(<con trỏ>,"% gì đó",biến)
+Thứ hai: test thử 2 code sau sẽ hiểu :D
---------------------------------------------------------------
#include <stdio.h>
int main()
{
char a;
FILE *f=fopen("STRING.TXT","rt");
do
{
fscanf(f,"%c",&a);
                printf("%c",a);
}while (!feof(f));
getchar();
getchar();
return 0;
}
STRING.TXT: "asd"   -> output: "asdd".
-----------------------------------------------------------------
#include <stdio.h>
int main()
{
char a;
FILE *f=fopen("STRING.TXT","rt");
do
{
a=fgetc(f);
printf("%c",a);
}while (!feof(f));
getchar();
getchar();
return 0;
}
STRING.TXT: "asd"   -> output: "asd " (lưu ý: có khoảng trắng nhé)
-----------------------------------------------------------------
Với 2 code trên cũng thấy sự khác biệt khó hiểu rồi :D nếu các bạn cho in ra mã ASCII thì còn thấy một chút lạ nữa :D.
Đối với fscanf nó sẽ không đọc kí tự EOF (có thể vì đây không phải kí tự in được) và nó vẫn giứ kí tự cũ.
fgetc thì nghiêm túc hơn nó đọc EOF bạn xem mã ASCII thì thấy lạ thay cái khoảng trắng kia có mã ASCII là -1. :D
Vui vẻ một chút thôi, làm đồ án đây.

Không có nhận xét nào:

Đăng nhận xét