Чтение и запись файлов на C - PullRequest
       1

Чтение и запись файлов на C

0 голосов
/ 30 октября 2018

Мое назначение:

Напишите программу, которая спрашивает пользователя, читать или писать файл. При записи файла он запрашивает строку текста и записывает его в файл. При чтении он читает файлы и выводит их на экран. Текст записывается в недвоичном режиме, который отличается от чтения и записи файла для проекта № 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 голосов
/ 30 октября 2018

Для записи:

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" );

Я также взял некоторые вольности и предположил, что это стек Microsoft с использованием fopen_s вместо fopen. В противном случае вы должны использовать fopen как

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

Для чтения:

Аналогично, за исключением того, что третий параметр будет err = fopen_s(&fptr, "text.txt", "r" ); или fptr = fopen("text.txt, "r") и используется fgets для чтения строки ввода (множество примеров там).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...