用C读写文件

时间:2018-10-30 17:58:16

标签: c file

我的任务:

  

编写一个程序,询问用户是读取还是写入文件。如果写入文件,它将要求输入一行文本并将其写入文件。如果读取,它将读取文件并将其输出到屏幕。文本以非二进制模式写出-与项目#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);
}

非常感谢您的帮助。

1 个答案:

答案 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来读取输入行(那里有很多示例)。