Чтение и запись в одном ФАЙЛЕ в C - PullRequest
1 голос
/ 02 апреля 2020

Я создал файл, в котором пользователь вводит имя файла, который он хочет создать, и сообщение внутри него, но мне нужно, чтобы после этого взаимодействия он выводил то, что набрал пользователь. Я использовал для этого w +, поскольку он читает и пишет, но по какой-то причине я ничего не получаю из файла.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 100

int main()
{
char nome_arquivo[MAX];
char mensagem[MAX];
char frase[MAX];

printf("Digite o nome do arquivo: ");
fgets(nome_arquivo, MAX, stdin);

//Remover o \n do final do fgets para que nao aja um quadradro no fim do nome do arquivo
strtok(nome_arquivo, "\n");

FILE *arq = fopen(strcat(nome_arquivo, ".txt"), "r+");

//Frase que vai dentro do arquivo
printf("Digite bastante coisa: ");
fgets(mensagem, MAX, stdin);

fprintf(arq, "%s", mensagem);

//Ler o que foi digitado e contar as ocorrencia de 'A', 'C', 'G' e 'T'
if (arq == NULL)
{
    printf("ERRO");
    system("Pause");
    exit(1);
}
else
{
    printf("\nMensagem dentro do arquivo:\n");
    fscanf(arq, "%s", frase);
    printf("%s\nS",frase);
}
fclose(arq);

}

1 Ответ

2 голосов
/ 02 апреля 2020

Вам нужно вернуться к началу файла, чтобы прочитать то, что вы только что написали.

Вы должны проверить, arq == NULL перед тем, как попытаться записать в него.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 100

int main()
{
    char nome_arquivo[MAX];
    char mensagem[MAX];
    char frase[MAX];

    printf("Digite o nome do arquivo: ");
    fgets(nome_arquivo, MAX, stdin);

//Remover o \n do final do fgets para que nao aja um quadradro no fim do nome do arquivo
    strtok(nome_arquivo, "\n");

    FILE *arq = fopen(strcat(nome_arquivo, ".txt"), "w+");

    if (arq == NULL)
    {
        printf("ERRO");
        system("Pause");
        exit(1);
    }

//Frase que vai dentro do arquivo
    printf("Digite bastante coisa: ");
    fgets(mensagem, MAX, stdin);

    fprintf(arq, "%s", mensagem);

//Ler o que foi digitado e contar as ocorrencia de 'A', 'C', 'G' e 'T'
    printf("\nMensagem dentro do arquivo:\n");
    rewind(arq);
    fscanf(arq, "%s", frase);
    printf("%s\nS",frase);
    fclose(arq);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...