c - 用C在同一个文件中读取和写入
问题描述
我创建了一个文件,用户键入他想要创建的文件的名称和其中的消息,但我需要在此交互之后,它会输出用户键入的内容。我使用 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);
}
解决方案
你需要回到文件的开头来阅读你刚刚写的内容。
在尝试写入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);
}
推荐阅读
- django - 将用户模型中的 first_name、last_name 和 email 设置为字段中的默认值
- sql - 使用拆分的 T-SQL 分组
- python - 输出是数字列表而不是一个数字
- java - 具有该位置 [1] 的参数不存在;嵌套异常是 java.lang.IllegalArgumentException:具有该位置 [1] 的参数不存在
- python - 在 SQLAlchemy 中使用 selectinload 加载相关对象时的排序顺序
- asp.net - 要并排渲染的 CommandField ImageButtons
- java - 为什么在减少之前需要对分区进行排序?
- javascript - 如何从 webpack 输出中获取 bundle.js 函数
- c# - 不使用 ironpython 从 C# 运行 Python 文件的另一个解决方案
- vba - Do While 循环不循环通过文件夹