c - 如何将整数加倍并更新它们?
问题描述
目前,在您的帮助下,我能够解决选项 1 的问题,现在我必须将“score.dat”文件的整数加倍并更新它们。我能够获得 double 的值,但我不知道如何在 'score.dat' 中更新它们我猜我必须使用 fwrite() 函数但不太确定。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
FILE *filepointer;
filepointer = fopen("score.dat", "rb");
int input;
int number [20] = {0};
int doubler = 0;
while (input != 3)
{
printf("1. Read and display all data from 'score.dat' \n");
printf("2. Multiply all the numbers in 'score.dat' by 2. \n");
printf("3. Quit. \n");
printf("Enter your option: ");
scanf("%d", &input);
printf("\n");
switch (input)
{
case 1:
fread(&number, sizeof(int), 20, filepointer);
printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d", number[0], number[1], number[2], number[3], number[4], number[5], number[6], number[7], number[8], number[9], number[10], number[11], number[12], number[13], number[14], number[15], number[16], number[17], number[18], number[19]);
printf("\n");
printf("\n");
break;
case 2:
for (int i = 0; i < 20; i++)
{
filepointer = fopen("score.dat", "wb");
doubler = number[i] + number[i];
number[i] = doubler;
fwrite(&number[i], sizeof(int), 1, filepointer);
}
printf("\n");
break;
}
}
}
解决方案
要根据以前的值修改数据,您需要
- 以更新模式打开文件 ("r+")
- 读取现有数据
- 需要更改数字。
将数据写入文件开头
case 2: filepointer = fopen("score.dat", "r+"); // Add Error check - if (filepointer != NULL ) ... // Read fread(&number, sizeof(int), 20, filepointer); // Update for (int i = 0; i < 20; i++) number[i] *= 2 ; // Write the data to the beginning of the file rewind(filepointer) ; fwrite(&number[i], sizeof(int), 20, filepointer); // Close file fclose(filepointer) ; ...
推荐阅读
- javascript - 从完成 API 调用的承诺链中返回字符串
- git - 如何从 git 包中恢复 gitlab 存储库?
- python - 连接错误:添加的层必须是类Layer的实例
- reactjs - Moment js跳过一个月与redux反应
- php - 更改 Elementor 菜单购物车小部件中的文本
- python - django嵌套内联,有什么解决方法吗?
- python - 通过子进程在python中启动后台进程并将输出写入文件
- progressive-web-apps - self.addEventListener('fetch', function(e) { }) 不工作
- java - 从 Dockerfile 使用 Windows 操作系统、Java、Selenium、Jenkins 构建 docker 容器
- javascript - 在javascript中将字符串(150000)转换为时间(hh:mm:ss)