我的任务:
编写一个程序,询问用户是读取还是写入文件。如果写入文件,它将要求输入一行文本并将其写入文件。如果读取,它将读取文件并将其输出到屏幕。文本以非二进制模式写出-与项目#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);
}
非常感谢您的帮助。
答案 0 :(得分: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" );
我也获得了一些自由,并且猜测这是使用fopen_s
而不是fopen
的Microsoft堆栈。否则,您应该像使用fopen
FILE *fptr
fptr= fopen("text.txt", "w");
阅读:
与第三个参数相似的是err = fopen_s(&fptr, "text.txt", "r" );
或fptr = fopen("text.txt, "r")
,并使用fgets
来读取输入行(那里有很多示例)。