Lỗi vòng lặp vô hạn in ra toàn khoảng trống trên màn hình console

#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *taptin = fopen("text.txt","r+");
    char c;
    if(taptin!=NULL) {
        fputs("hello",taptin);
        do {
            c=fgetc(taptin);
            printf("%c",c);
        } while (c!=EOF);

    } else
        printf("file not foud");
    fclose(taptin);
}

cụ thể nếu em dùng đoạn

do {
      c=fgetc(taptin);
      printf("%c",c);
 } while (c!=EOF);

thì vẫn viết được vào file text nhưng nó lại in ra màn hình console rất nhiều khoảng trống

giúp em với ạ tks!!@@

1 Like

Bạn ơi, Trước hết bạn sửa lại code đi nào :smiley:
Cho vào Markdown nhé. Để mọi người dễ dàng hơn trong việc giúp đỡ nhé

2 Likes

Bạn mở một file để ghi thì dùng điều kiện này hơi bất hợp lý vì làm sao kiểm tra được lúc nào thì kết thúc file :smiley:

1 Like

Nếu dùng do-while thì điều kiện sửa lại là c==EOF, dùng while mới c!=EOF

1 Like

Tks mọi người mình mới nhập môn nên hơi gà :v:

1 Like

mình thử rồi nhưng nếu thây thành c==EOF thì chả in ra j cả

1 Like

mà vừa mình kiểm tra lại thì đằng sau file text cũng có một khoảng trống khoảng 3 dòng :smile:

1 Like

ok bạn, cho mình xin lỗi vì nhầm. điều kiện vòng do-while của bạn đúng chứ ko sai, mình bộp chộp sai chỗ này. bài của bạn khắc phục như sau

        fputs("hello",taptin);
        rewind(taptin);
        do {
            c=fgetc(taptin);
            if(c!=EOF)
                printf("%c",c);
        } while (c!=EOF);

bởi vì sau khi bạn fputs chuỗi “hello” lên taptin thì con trỏ taptin nó trỏ ngay sau kí tự ‘o’, bạn phải chuyển con trỏ về đầu file thì mới đọc được.

1 Like

à tks bạn mình cũng đọc tài liệu liên quan đến cái “dấu nháy ảo” rồi :smile: mỗi tội k hiểu sao quên. lúc bạn ns đến mình mới nhớ :blush:

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