c - 如何将修改后的数组保存到文件中
问题描述
所以我创建了一个保存在文件中的数组。我在文件中将数字 4 打印了 100 次。现在,每次访问数组中的一个元素时,它的值都会减少 1。因此,如果访问 A[1] = 4,那么它将变为 A[1] = 3 并保存在文件中。问题是我无法将修改后的数组保存到文件中。
我已经尝试移动 FILE 指针的位置。
void buildingB4()
{
system("CLS");
FILE *input, *output;
int i, B4[100], room;
input = fopen("B4.txt", "r");
if (input == NULL)
{
output = fopen("B4.txt", "w");
for (i = 1; i <= 100; i++)
{
B4[i] = 4;
fprintf(output, "%d\n", B4[i]);
}
fclose(output);
for (i = 1; i <= 100; i++)
{
if (i % 10 == 0)
{
printf("\n\n");
}
printf("B-4-%d(%d)\t", i, B4[i]);
}
}
else
{
for (i = 1; i <= 100; i++)
{
fscanf(input, "%d\n", &B4[i]);
if (i % 10 == 0)
{
printf("\n\n");
}
printf("B-4-%d(%d)\t", i, B4[i]);
}
fclose(input);
printf("\nPlease choose a room:B-4-");
scanf("%d", &room);
B4[room] = B4[room] - 1;
output = fopen("B4.txt", "a");
fprintf(output, "%d\n", B4[i]);
studentDetails();
}
}
假设 A[1] = 4 并且当用户输入为 1 时,1 保存在名为 room 的变量中。所以 A[room] = A[room] -1 所以结果是 A[1] = 3 并且它修改了保存在文件中的 A[1]。
解决方案
我在您的代码中发现了一些小错误,这是您的固定代码:
#define HOME_SIZE 100
void show_rooms(int B[]){
for (int i = 0; i < HOME_SIZE; i++){
if (i % 10 == 0){
printf("\n\n");
}
printf("B-4-%3d(%d) ", i + 1, B[i]);
}
}
void buildingB4()
{
FILE *input, *output;
input = fopen("B4.txt", "r");
unsigned int B[HOME_SIZE], room;
if (input == NULL){
fclose(input);
// Setting all homes to 4.
for (int i = 0; i < HOME_SIZE; ++i){
B[i] = 4;
}
output = fopen("B4.txt", "w");
for(int i = 0; i < HOME_SIZE; ++i)
fprintf(output, "%d\n", B[i]);
fclose(output);
show_rooms(B);
}
else{
for (int i = 0; i < HOME_SIZE; ++i){
fscanf(input, "%d", &B[i]);
}
fclose(input);
show_rooms(B);
printf("\nPlease choose a room:B-4-");
scanf("%d", &room);
if (room > 0 && room <= HOME_SIZE)
B[room - 1] -= 1;
output = fopen("B4.txt", "w");
for(int i = 0; i < HOME_SIZE; ++i)
fprintf(output, "%d\n", B[i]);
}
}
请注意:
- 在 C 中,索引从 0 而不是 1 开始。
- 工作后关闭使用文件,以便正确保存。
- 不要对 scanf 使用 '%d\n' 格式,它会自动忽略 ' ' 和 '\n' 。
未来发展提示:
- 尝试使用feof函数来了解您的文件是否结束,而不是使用恒定大小作为输入。
推荐阅读
- python - 配置文件首选项不适用于 Selenium Python
- python - 在 VSCode 中获取 python 函数文档字符串的快捷方式
- r - 如何计算R中多个标准差的平均值
- cplex - 解决方案只返回一些决策变量
- javascript - 如何将带有附加信息的多个文件附加到表单数据中?
- python - 内容更新时如何仅在 Python 中打印字符串?
- python - 如何找到numpy数组的每两行的平均值
- java - ERR 此实例已禁用集群支持
- javascript - 为什么我不能访问同一类的静态对象中的静态函数?
- visual-studio-code - VSCode:无法读取未定义的属性“包含”