我正在尝试编写可以在 .txt 文档中插入、查阅和删除任何信息的代码,但是当我在 C 控制台上插入信息时,每条信息都保存为奇怪的字母和符号......
我正在尝试编写可以插入、查阅和删除文档中任何信息的代码 .txt
,但是当我在 C 控制台上插入信息时,每条信息都保存为这样的奇怪的字母和符号:
Q(@ `$@ 1 P ÿÿÿÿÿÿÿÿ1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Dados
{
char ID[2];
char NOME[50];
char EMAIL[50];
char TELEFONE[14];
char STATUS[1];
} Dados;
Dados GetDados()
{
Dados dados;
system("cls");
printf("\n\nDigite o ID: ");
scanf("%s", dados.ID);
printf("\n\nDigite seu primeiro nome: ");
scanf("%s", dados.NOME);
printf("\n\nDigite o Email: ");
scanf("%s", dados.EMAIL);
printf("\n\nDigite o Telefone: ");
scanf("%s", dados.TELEFONE);
rewind(stdin);
return dados;
}
void ConsultarPorID(char ID[]) {
FILE * arq;
Dados dados;
int encontrou = 0;
if ((arq = fopen("c:\\pastadados\\newdados.txt", "r")) == NULL) {
printf("Erro ao abrir o arquivo.\n");
return;
}
while (fscanf(arq, "%s%s%s%s", dados.ID, dados.NOME, dados.EMAIL, dados.TELEFONE) != EOF) {
if (strcmp(dados.ID, ID) == 0) {
printf("\n\tId: %s\n", dados.ID);
printf("\tNome: %s\n", dados.NOME);
printf("\tEmail: %s\n", dados.EMAIL);
printf("\tTelefone: %s\n", dados.TELEFONE);
encontrou = 1;
}
}
if (!encontrou) {
printf("Nenhum rsegistro encontrado com o ID '%s'.\n", ID);
}
fclose(arq);
}
int main()
{
FILE * arq;
Dados dados;
char ID[2];
char NOME[50];
char EMAIL[50];
char TELEFONE[14];
char STATUS[1];
int resposta, idConsulta;
printf("\n1 - Inserir dados\n\n2 - Consultar por ID\n\n3 - Consultar por nome\n\n4 - Consultar por email\n\n5 - Consultar por telefone\n\n6 - Excluir dados\n\n\nQue opcao deseja prosseguir? ");
scanf("%d", &resposta);
if(resposta == 1)
{
if ((arq = fopen("c:\\pastadados\\newdados.txt", "a")) == NULL)
{
printf("\n\nNao foi possivel criar o arquivo! :(\n\n");
exit(1);
}
else
{
do {
GetDados();
fwrite(&dados, sizeof(Dados), 1, arq);
printf("\n\nDados salvos com sucesso!\n");
printf("\nDeseja inseir mais dados? (s/n): ");
resposta = getche();
} while (resposta != 'n' && resposta != 'N');
fclose(arq);
}
}
else if (resposta == 2) {
system("cls");
printf("Digite o ID que deseja consultar: ");
scanf("%d", &idConsulta);
fgets(ID, 2, stdin);
ID[strcspn(ID, "\n")];
ConsultarPorID(ID);
}
else if (resposta == 6) {
remove("c:\\pastadados\\newdados.txt");
printf("\nDados excluidos com sucesso!");
}
return 0;
}
我不知道,也许这个错误是在 Char 字符串中