Tôi đang làm việc trên một chương trình C đơn giản để mở một tệp và đọc một số dữ liệu từ đó. Không có lỗi biên dịch, nhưng khi tôi chạy chương trình trên một tệp nhất định, tôi nhận được lỗi "Phân đoạn lỗi: mã đã bị bán phá giá". Tôi đã chèn một câu lệnh in ở đầu mã của tôi, và nó không chạy. Có thể nhận được lỗi phân đoạn khi bạn chưa thực hiện bất kỳ điều gì không?Lỗi phân đoạn trước dòng mã đầu tiên
#include <stdio.h>
int main(int argc, char **argv)
{
printf("%s", "Made it to here!");
FILE *fp;
char input[100];
fp = fopen(argv[1], "r+b");
fgets(input, sizeof(input), fp);
printf("%s", input);
fclose(fp);
return(0);
}
Điều này hoạt động khi tôi chạy trên phiên bản văn bản của chính nó, nó in ra dòng đầu tiên. Tuy nhiên, khi tôi chạy nó trên một tập tin khác, texttest.vmf, tôi nhận được lỗi phân đoạn và in đầu tiên không thực thi. VMF là các tệp bản đồ Valve, nhưng chúng ở định dạng văn bản chuẩn. Tệp này có dung lượng lớn khoảng 3,7 KB. Bất kỳ ý tưởng?
Bạn nên làm theo câu trả lời dưới đây, rất có thể vấn đề là bạn không kiểm tra sự trở lại của fopen để xem nếu có lỗi. –