Thắc mắc về các thao tác với FILE trong C

Tạo 1 FILE text,thêm số thự tự của dòng vào trước mỗi dòng trong file output.
CODE của mình

#include<stdio.h>

void linereadwrite(FILE *fin,FILE *fout) {
    int MAX_LEN=81,i=1;
    char buff[MAX_LEN];

    while(fgets(buff,MAX_LEN,fin)!=NULL) {
        fprintf(fout,"%d %s",i,buff);
        i++;
        printf("%s",buff);
    }
}

int main() {
    FILE *fptr1,*fptr2;

    fptr1=fopen("1.txt","r");
    fptr2=fopen("2.txt","w");

    linereadwrite(fptr1,fptr2);

    fclose(fptr1);
    fclose(fptr2);

    return 0;
}

Mình không biết lỗi do đâu nó ghi vào file out sai,mong được mọi người giups đỡ :grinning:

Nội dung của 1.txt là gì?
Output 2.txt ra sao :smile:

Mình chạy bình thường bạn ơi. Mình dùng sublime. Bạn có thể đưa file out sai ra được ko?

1 Like

Đúng vậy, thấy ra bình thường mà :smile: Cho thêm 1.txt2.txt mới “chuẩn bịnh” được.

1 Like

Vâng,chạy thì nó vẫn chạy đươc,nhưng mở file out ra xem thì nó lại ghi không giong với những gì thấy trên terminal?

Cụ thể các I/O của mình.

//1.txt
Day
Nhau
Hoc
//Console
Day
Nhau
Hoc
//2.txt
1 Day
2 Nhau
3 Hoc

Bạn đối chiếu thử. Hay là “sai” ở đây là “khác”?

1 Like

Ặc ặc, chả phải đây là yêu cầu của đề bài sao?

Lệnh printf trong code đâu có thêm số thứ tự

printf("%s",buff);
1 Like

hình như em bị lỗi bộ đệm,dùng cái này while(getchar()!=’\n’);
thì lại được.Mà sao lại bị lỗi nhờ ?? Cảm ơn mọi người.

mình cảm ơn :grinning:

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