首页 > 解决方案 > 用 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);
}

我将衷心感谢您的帮助。

标签: cfile

解决方案


对于写作:

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. 否则,您应该使用fopenlike

FILE *fptr
fptr= fopen("text.txt", "w");

阅读:

类似的,除了第三个参数是err = fopen_s(&fptr, "text.txt", "r" );orfptr = fopen("text.txt, "r")并用于fgets读取一行输入(有很多例子)。


推荐阅读