dwxmxy 2024-05-15 14:03 采纳率: 66.7%
浏览 13
已结题

c语言函数调用后,造成无限循环该函数

为什么调用这个函数后,会无限循环这个函数本身,在for循环后加输入语句程序正常运行,这是为什么呢?该函数为void函数

img


img

  • 写回答

19条回答

  • 阿里嘎多学长 2024-05-15 14:29
    关注
    获得0.30元问题酬金

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您想要解决的问题

    您想要解决的问题是关于C语言中函数调用导致的无限递归问题。您在调用某个函数后,该函数不断地调用自身,导致程序无法正常结束。您还提到,在for循环后添加输入语句可以使程序正常运行。

    图片内容

    您上传的图片包含了一段C语言代码,该代码涉及到文件的打开、读取和关闭,以及一个for循环用于处理读取的数据。代码中存在一些语法错误,例如:

    • printf函数中的括号使用了中文字符;
    • for循环中变量j的初始化和迭代表达式不正确;
    • fscanf函数中的格式字符串和变量列表不匹配。

    问题出现原因

    问题出现的原因是代码中存在语法错误和逻辑错误。具体来说:

    • 语法错误导致编译器无法正确执行代码;
    • 逻辑错误可能导致程序运行时出现异常行为,如无限循环。

    问题解决方案

    为了解决这个问题,我们需要修正代码中的语法错误,并确保逻辑正确。以下是修正后的代码示例:

    #include <stdio.h>
    
    typedef struct {
        char bianhao[20];
        char mingcheng[50];
        double danjia;
        int shuliang;
    } Product;
    
    int main() {
        FILE *f1;
        Product num[100]; // 假设最多处理100个商品
        int i, count = 0;
        
        f1 = fopen("shangpin.txt", "r");
        if (f1 == NULL) {
            printf("打开文件失败。\n");
            exit(0);
        }
        
        while (!feof(f1)) {
            if (fscanf(f1, "%s %s %lf %d", num[count].bianhao, num[count].mingcheng, &num[count].danjia, &num[count].shuliang) == 4) {
                count++;
            } else {
                break; // 如果读取失败,退出循环
            }
        }
        
        fclose(f1);
        printf("商品的所有信息为:\n");
        for (i = 0; i < count; i++) {
            printf("编号:%s\n", num[i].bianhao);
            printf("名称:%s\n", num[i].mingcheng);
            printf("单价:%.2f\n", num[i].danjia);
            printf("数量:%d\n", num[i].shuliang);
        }
        
        return 0;
    }
    

    提供代码

    上述代码是修正后的版本,它应该可以正常运行,前提是shangpin.txt文件格式正确,并且包含可读的数据。

    代码运行方式

    运行这段代码,您需要:

    • 一个C语言编译器,如GCC;
    • 将代码保存为.c文件;
    • 使用编译器编译代码,例如使用命令gcc -o program_name filename.c
    • 运行编译后的程序,例如在命令行中输入./program_name

    代码预期运行结果

    如果shangpin.txt文件包含正确的数据,程序将读取文件内容,并打印出每个商品的编号、名称、单价和数量。

    推荐相关链接

    请注意,这些链接仅供参考,实际内容可能与您的问题不完全相关。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月24日
  • 修改了问题 5月16日
  • 赞助了问题酬金15元 5月16日
  • 修改了问题 5月16日
  • 展开全部

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 Ubuntu20.04无法连接GitHub
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥30 C++行情软件的tick数据如何高效的合成K线