当我的 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);
}
}
这是一个基本的地址簿程序,用户可以从中添加和删除人员,我试图最终获取保存在数组中的数据并将其存储在文本文件中。
在 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);
}
}