c - 用 C 读写文件
问题描述
我的任务:
编写一个程序,询问用户是读取还是写入文件。如果写入文件,它会要求输入一行文本,并将其写入文件。如果读取,它会读取文件并将其输出到屏幕。文本以非二进制模式写出 - 这与项目 #2 的文件读写不同。记住我们如何使用
fgets()
字符串输入。还有一个fputs()
。
我正在尝试编写写入部分的代码,但我无法弄清楚我的错误是什么。另外我真的不知道如何创建阅读部分。那我只需要打开文件吗?
我的代码是:
#include <stdio.h>
#define HOLD_SCREEN while(getchar()!='q')
int write() {
int num;
FILE*fptr;
fptr = fopen_s;
if (fptr == NULL) {
printf("ERROR");
exit(1);
}
printf("Enter num: ");
scanf_s("%d", &num);
fprintf(fptr, "%d", num);
fclose(fptr);
return(0);
}
int main(void) {
while (1) {
printf("\n\tEnter an option: (R)ead or (W)rite a file or enter a q if you want to quit: ");
char buf[50];
buf[0] = '\0';
scanf_s("%s", buf, 50);
switch (toupper(buf[0])) {
case 'W':
write();
break;
case 'R':
printInventory();
break;
case 'Q':
return(0);
}
}
HOLD_SCREEN;
return(0);
}
我将衷心感谢您的帮助。
解决方案
对于写作:
fopen_s
需要3个参数,
errno_t fopen_s(FILE** pFile, const char *filename, const char *mode);
一个例子是(在写模式下)
errno_t err;
FILE *fptr
err = fopen_s(&fptr, "text.txt", "w" );
我也冒昧地猜测这是使用 offopen_s
而不是fopen
. 否则,您应该使用fopen
like
FILE *fptr
fptr= fopen("text.txt", "w");
阅读:
类似的,除了第三个参数是err = fopen_s(&fptr, "text.txt", "r" );
orfptr = fopen("text.txt, "r")
并用于fgets
读取一行输入(有很多例子)。
推荐阅读
- r - 如何在R中的函数中动态重命名列?
- python - GCP App Engine 上的 python-magic - 部署失败
- google-sheets-formula - 有没有办法从 Google 表格中的参考列中计算和求和值?
- rust - 如何在 rust 结构中安全地包装 C 指针
- r - 如何在 RMarkdown 中包含数据集的描述?
- linux - 从 powershell 脚本运行 docker,如果设置则传递 `--env` 变量
- c# - 为什么通过 VS 开发人员控制台使用 MSBuild 可以正常工作,但通过 powershell 它要我安装 Windows SDK?
- algorithm - 将二叉树的有序访问保存在数组中
- python - 强制从 URL 下载图像的最长时间
- python - Python3 中的惰性求值