【问题标题】:When my fprintf receives user input it crashes当我的 fprintf 收到用户输入时它崩溃
【发布时间】:2021-06-17 03:44:02
【问题描述】:

这是一个基本的地址簿程序,用户可以从中添加和删除人员,我试图最终获取保存在数组中的数据并将其存储在文本文件中。

choose 函数中,当ichoice == 8 程序应该将整数itter 打印到文本文件list.txt 中。当程序第一次打开时它会打印 0 并且我没有做任何更改它,但是当我将名称添加到地址簿时导致 itter 增加程序崩溃,每当我返回并尝试保存到 list.txt 时。

        else if (ichoice == 8) {
            FILE *outFile = fopen("list.txt", "w");
            if (outFile != NULL) {
                printf("%d", itter);
                fprintf(outFile, "%d", itter);
            }
            fclose(outFile);
        }

【问题讨论】:

标签: c file printf scanf


【解决方案1】:

代码片段存在一些问题:

  • 即使fopen 调用不成功,您也是fclose(outFile)
  • 您没有在数字后附加换行符,导致进一步的输出与 itter 的转换无法区分。
  • 如果文件已经存在,fopen("list.txt", "w"); 将截断该文件:这可能不是预期的行为。

这是一个修改过的sn-p:

        else if (ichoice == 8) {
            FILE *outFile = fopen("list.txt", "w"); // or possibly "a"
            if (outFile != NULL) {
                printf("%d\n", itter);
                fprintf(outFile, "%d\n", itter);
                fclose(outFile);
            }
        }

【讨论】:

    猜你喜欢
    • 2019-05-30
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2017-05-08
    • 2015-12-09
    • 2015-02-10
    • 2017-11-08
    • 1970-01-01
    相关资源
    最近更新 更多