当我的 fprintf 收到用户输入时它崩溃了

When my fprintf receives user input it crashes

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

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);
        }

代码片段中存在一些问题:

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

这是修改后的片段:

        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);
            }
        }