c - 为什么我在 printf ("ID | Name | Qty. | Price\n\n"); 之后出现段错误?

标签 c shopping-cart

    void displayAllProduct()
{
    FILE *filep;
    struct Product a;
    int id, found=0;

    system("clear");
    filep=fopen("fileproduct.txt","w+");
    printf("===========================================================================================\n");
    printf("\t\t Product Details\n\n");
    printf("===========================================================================================\n");

    printf("ID | Name | Qty. | Price\n\n");

    while(1) //infinite loop
    {
        printf("182");
        fread(&a,sizeof(a),1,filep);
        printf("184");
        if(feof(filep))
        {
            break; //done
        }
        printf("%d\t %s\t %d\t %d\n",a.id, a.name,  a.qty, a.price);
    }
    printf("===========================================================================================\n");
    fclose(filep);
}

我目前正在尝试为我的 C 编程类(class)制作一个购物车,但在尝试查看我的库存时不断出现段错误。以上是我展示产品的功能。

最佳答案

您没有验证fopen的返回值,这可能 由于权限等原因失败,出现段错误 在 NULL 指针取消引用上,这可能会发生 这里。您可以做的几件事:

  1. fopen之后,执行:

    if (!filep) {
        perror("fopen");
        exit(1);
    }
    
  2. 在调试打印后添加换行符,并使用 fflush

关于c - 为什么我在 printf ("ID | Name | Qty. | Price\n\n"); 之后出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35966591/

相关文章:

c - 如何防止用户输入超过最大限制的数据?

c - 如何编写一个 C 程序来计算 n 个数字的除法和减法?

java - 类似于 Java 的 OpenCart

php - 从哪里开始将 Paypal 集成到我的事件网站?

sql - 购物车中客户与订单的关系

php - 保存用户选择的 jQuery 列表(如购物车)

CS50 绘制函数仅绘制零

c - 如何使 sscanf 读取到 '\0' 字符

c - 从 CSV 文件读取并解决 ";"问题

php - 我可以在 PHP 中创建没有 session 的购物车吗?