Đọ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

đầ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;
}

1 Like

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

1 Like

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

2 Likes

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 ạ

1 Like

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

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

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

2 Likes

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]

1 Like

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 :sweat_smile:

1 Like

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 :sunglasses:

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 :sob:

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]

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 :smiley:.

1 Like

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 :sunglasses:
Đú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 :laughing:
Hoặc bỏ /n cũng ra kết quả như bên dưới :sunny:

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]

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