30/09/2018, 21:27

Đọc ghi file ngôn ngữ C

Mọi người cho em hỏi. muốn đọc 1 chuỗi từ tệp thì dùng câu lệnh nào ạ. ai cho ví dụ luôn thì càng tốt ạ. em cảm ơn

Sơn viết 23:42 ngày 30/09/2018

đầu tiên bạn phải mở 1 stream đến file:

FILE *input=fopen(“input.txt”,“r”);(“r” là đọc từ file,“w” là gi đén file)

sau đó bạn dùng câu lệnh fgets() để đọc từng dòng trong file:

while(fgets(str,20,input)!=NULL) (str là chuỗi, 20 là đọ dài chuỗi đó)

VD:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *input=fopen("input.txt","r");

    if(input==NULL)
        printf("Loi\n");

    char str[20];

    while(fgets(str,20,input)!=NULL)
        printf("%s\n",str);
    return 0;
}

The Wind viết 23:37 ngày 30/09/2018

Đọc thấy mã nguồn kì cục nhìn lại thì ra là e C …Cứ tưởng là C++

Người bí ẩn viết 23:31 ngày 30/09/2018

Bạn cứ nhìn thấy #include <stdio.h> or #include <stdlib.h> là C à

Biên Nhút viết 23:30 ngày 30/09/2018

VÍ dụ trong file input.txt có từ “DAY NHAU HOC”. nhưng em vẫn không đưa được dòng này ra màn hình. Anh xem lại cho em với ạ

Sơn viết 23:33 ngày 30/09/2018

Bạn cho mình xem code được không?

Sơn viết 23:38 ngày 30/09/2018

À mà bạn phải đặt file txt cùng với file main.c nhé

edit: mình quên đóng file , trước khi kết thúc ct, bạn cho câu lệnh fclose(input) nữa nhé.

The Wind viết 23:40 ngày 30/09/2018

C++ :

[code]#include
#include
using namespace std;
int main ()
{
fstream f ;
f.open (“File_notepad.wind”,ios_base::out);
if (!f.is_open()){
cout<<"Đéo mở đc ";

}
f<<"Xin chào C++ "<<“Có cách nào khiến mày dễ học hơn không hả C++”;
f.close();
f.open(“File_notepad.wind”,ios_base::in);

char a[100];

if (!f.eof())
{
f.getline(a,100);
}
cout<<a;
f.close();
}
[/code]

The Wind viết 23:30 ngày 30/09/2018

Tại mình đọc phần giải thích của bạn ý trc nên mình tưởng là C++…Nhìn xuống dưới mới phát hiện ra là C

The Wind viết 23:36 ngày 30/09/2018

Mình thử chạy code của @nts311 trên Cloud IDE C9.io thì vẫn được mà .Bạn check thử xem có sai cái gì hông …
Kết quả của mềnh

Running /home/ubuntu/workspace/z2.cc Xin chào C++ Có c ách nào khiến m ày dễ học hơn không hả C++
Mỗi tội nó không in nguyên 1 hàng như C++ mà lại xuống dòng lộn xộn như này ! K học C nên cũng không biết giải thích như nào lun

Mã nguồn thì giống như trên :

[code]#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *input=fopen(“File_notepad.wind”,“r”);

if(input==NULL)
    printf("Loi\n");

char str[20];

while(fgets(str,20,input)!=NULL)
    printf("%s\n",str);
return 0;

}[/code]

Sơn viết 23:42 ngày 30/09/2018

Hình như là mình đặt đọ dài của str là 20 nên khi fgets nó đọc hết 20 kí tự thì nó sẽ không đọc nữa, mà sau khi in chuỗi ra xong nó mới đọc tiếp. Bạn thử xóa cái ‘\n’ rồi test lại xem có bị xuống dòng nữa hay không .

The Wind viết 23:27 ngày 30/09/2018

Mình thử tăng độ dài của mảng char lên 100 và hết lỗi rồi ! Thank bạn
Đúng là sơ xuất quá ,k kiểm tra xem mảng có đủ khả năng chứa hết chuỗi kí tự đó k mà đã in ra rùi
Hoặc bỏ /n cũng ra kết quả như bên dưới

Kết quả :

[code]Running /home/ubuntu/workspace/z2.cc
Xin chào C++ Có cách nào khiến mày dễ học hơn không hả C++

Process exited with code: 0[/code]

Bài liên quan
0