gpt4 book ai didi

c - 在 C 中,要在数据库(文件)中存储更多值,请输入 int 并调用特定行

转载 作者:行者123 更新时间:2023-11-30 19:01:00 26 4
gpt4 key购买 nike

在C中,如何在文件(数据库)中存储数组以及如何在程序中访问它。在此程序中,当我输入 ex.2 的索引号(其中包含 30)时,在我想将年龄减去 5 后,它会显示 25,但是当我想更改索引号 2 时,它会从 25 中减去,,,不是从给定的索引例如我在数据库(data2.txt)文件中存储了值像这样..10203040我想超出或更新值(30),所以我可以做什么改变......

  #include <stdio.h>
#define PATH "/storage/emulated/0/c language/data2.txt"
int main()
{
FILE *file;
int age[], s, i;
printf("Enter the array index:");
scanf("%d", &i);
file = fopen(PATH, "r");
if (file == NULL)
{
printf("files does not exist");
return 1;
}
fscanf(file, "%d", &age[i]);
fclose(file);
printf("Enter how much age should to be subtracted:");
scanf("%d", &s);
file = fopen(PATH, "w");
age[i] = age[i] - s;
fprintf(file, "%d", age[i]);
fclose(file);
printf("%d", age[i]);
}

最佳答案

如果你不想重置你的文件,你应该使用“a”参数,因为现在当你想更新文件中的值时,你只保存25(就像在前例中一样)所有其他值都消失了(但是“a”)将保存的值附加到 EOF)。如果我得到了正确的结果,那么您正在尝试从文件中读取 3 个变量,但是当您这样做时:

fscanf(file, "%d", &age[i]);

您仅获得文件中的第一个变量。如果你想获得第三个,你需要再调用这个函数 2 次。

最好在循环中将所有数据放入数组中,然后对数组进行操作。

#include <stdio.h>
#define SIZE 40
int main()
{
FILE *file;
int age[SIZE], s,i, j=0;
printf("Enter the array index:");
scanf("%d", &i);
file = fopen("data.txt", "r");
if (file == NULL)
{
printf("files does not exist");
return 1;
}
while(1){ //getting all data from file to array
if(feof(file))
break;
fscanf(file, "%d", &age[j++]);
}
for(int x=0;x<j;x++)
printf("%d ",age[x]);
fclose(file);
printf("\nEnter how much age should to be subtracted:");
scanf("%d", &s);
file = fopen("data.txt", "w");
age[i] -= s;
for(int k=0;k<j;k++) //passing updated data to file
fprintf(file, "%d ", age[k]);
fclose(file);
}

关于c - 在 C 中,要在数据库(文件)中存储更多值,请输入 int 并调用特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58669385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com