30/09/2018, 16:15

Thắc mắc về hàm feof trong c?

while (!feof(f))
{
    fscanf(f,"%s",&A[i]);
    i++;
} 

khi dịch đến đoạn code trên chương trình báo lỗi stray’`’ in program .mình mới học về tệp,ai giúp mình với

Nguyễn Minh Dũng viết 18:23 ngày 30/09/2018

@Htc cho thêm code đi, code này chắc ngắn? Copy toàn bộ câu báo lỗi luôn.

Đừng copy 1 đoạn code hoặc 1 đoạn lỗi. Nếu có thể hay post toàn bộ nhé

Hồ Thế Chín viết 18:29 ngày 30/09/2018
#include conio.h
#include iostream
#include fstream
#include string
#include stdio.h

int main()
{
    FILE*f= fopen("input.txt","r");
    if(!f)
    {
        printf("not find file \n");
        return 0;
    }
    int i=0;
    char A[100000];
`    while (!feof(f))
    {
        fscanf(f,"%s",&A[i]);
        i++;
    }
    fclose(f);
    FILE*f1=fopen("output.txt","w");
    for (int j=0;j<i;j++)
        fprintf(f1,"%s",A[j]);
    fclose(f1);
}

toàn bộ đây bạn ơi

Nguyễn Minh Dũng viết 18:18 ngày 30/09/2018

` while (!feof(f))

Copy toàn bộ lộ ra cái lỗi ngay, có cái dấu ` ở ngay phía trước while, bỏ dấu đó đi.

Nhưng đó cũng chưa hết lỗi

Các thư viện này vừa không cần thiết, vừa sai cấu trúc.

#include conio.h
#include iostream
#include fstream
#include string
#include stdio.h

Chỉ cần thế này là đủ

#include <stdio.h>

Câu lệnh này cũng sai

fprintf(f1,"%s",A[j]);

Không thể dùng %s cho A[j] được. Trong trường hợp này phải dùng

fprintf(f1,"%c",A[j]);

Bạn nên xem qua các videos hướng dẫn lập trình C ở đây

Hồ Thế Chín viết 18:17 ngày 30/09/2018

mình muốn đưa đoạn code này vào 1 hàm và mình viết thế này chương trình chạy được nhưng mà bị lỗi has stop working

int duyetfile(char *fn)
{
    FILE*f= fopen("fn","r");
   /* if(!f)
    {
        printf("not find file \n");
        return 0;
    }*/
    int i=0;
    char A[100000];
    while (!feof(f))
    {
        fscanf(f,"%c",&A[i]);
        i++;
    }
    fclose(f);
    FILE*f1=fopen("output.txt","w");
    for (int j=0;j<i;j++)
        fprintf(f1,"%c",A[j]);
    fclose(f1);
}
int main()
{
    duyetfile ("input.txt");
}
Nguyễn Minh Dũng viết 18:22 ngày 30/09/2018

Tại bạn comment cái code này. Đoạn code này kiểm tra xem file có tồn tại hay không. Nếu không có, dừng chương trình.

/* if(!f)
{
printf(“not find file \n”);
return 0;
}*/

Bạn cố tình bỏ qua nó, dẫn đến không có file, mà bạn lại cố đọc cái chỗ không có đó. Điều đó dẫn đến lỗi.

Code như sau sẽ chạy được.

#include <stdio.h>

int duyetfile(char *fn)
{
    FILE*f= fopen("fn","r");
    if(!f)
    {
        printf("not find file \n");
        return 0;
    }
    int i=0;
    char A[100000];
    while (!feof(f))
    {
        fscanf(f,"%c",&A[i]);
        i++;
    }
    fclose(f);
    FILE*f1=fopen("output.txt","w");
    for (int j=0; j<i; j++)
        fprintf(f1,"%c",A[j]);
    fclose(f1);
    return 0;
}
int main()
{
    duyetfile ("input.txt");
    return 0;
}
Hồ Thế Chín viết 18:27 ngày 30/09/2018

tại vì mình thấy khi chạy có đoạn code check đấy,thì luôn hiện not find file,nên xóa đi

Hồ Thế Chín viết 18:27 ngày 30/09/2018

mà mình muốn viết 1 đoạn code để khi run chương trình yêu cầu nhập tên file thì

char x;
    printf("Nhap ten file: ");
    scanf("%c",&x);
    duyetfile (x);

sai chỗ nào ạ

Gió viết 18:27 ngày 30/09/2018

Bỏ dấu “” trong fopen là dc mà

Nguyễn Minh Dũng viết 18:22 ngày 30/09/2018

Bỏ "" trong này hả, lỗi sao @Gio?

FILE*f= fopen("fn","r");
FILE*f1=fopen("output.txt","w");
Gió viết 18:30 ngày 30/09/2018

Em hiểu ý bạn ấy fn là tên file nhập vào
Chứ không phải là file tên “fn”
đổi thành fopen(fn,“r”); chắc là hết lỗi

Nguyễn Minh Dũng viết 18:24 ngày 30/09/2018

À, em nói đúng rồi Anh đang trong cty, cứ thấy code đoạn nào có vấn đề là làm rẹt rẹt ko có đọc =))

Code đã sửa lại nhờ nhắc nhở của @Gio

#include <stdio.h>

int duyetfile(char *fn)
{
    FILE*f= fopen(fn,"r");
    if(!f)
    {
        printf("not find file \n");
        return 0;
    }
    int i=0;
    char A[100000];
    while (!feof(f))
    {
        fscanf(f,"%c",&A[i]);
        i++;
    }
    fclose(f);
    FILE*f1=fopen("output.txt","w");
    for (int j=0; j<i; j++)
        fprintf(f1,"%c",A[j]);
    fclose(f1);
    return 0;
}
int main()
{
    duyetfile ("input.txt");
    return 0;
}
Bài liên quan
0