gpt4 book ai didi

c++ - 在 C++ 中创建 .dat 文件

转载 作者:行者123 更新时间:2023-11-28 07:30:39 26 4
gpt4 key购买 nike

大家好,我必须创建一个 .dat 文件,无论用户输入什么都应该命名,这个文件包含人名(全名是否在一起并不重要)、日期和他/她重量。现在的问题是文件“name”.dat 已创建,但在文件内部它应该只是用户名而不是在我的程序中我显示为“name”.dat(就像文件名和扩展名一样)。这是我的代码:

#include <cstdlib>
#include <iostream>
#include <stdio.h>
using namespace std;

struct Registro
{
int dia,mes,anio; //day,month,year
float peso; //weight
};
int main(int argc, char** argv) {
FILE* archivo;
int numero=0;
char nombre[100],c;
Registro regis;

cout<<"Nombre del paciente: ";
scanf("%s", &nombre);
getchar();

strcat(nombre,".dat");

archivo = fopen(nombre, "a+");

if(archivo)
{
cout<<"En que dia estamos?(dd): ";
scanf ("%d",&regis.dia);
cout<<"En que mes estamos?: ";
scanf ("%d",&regis.mes);
cout<<"En que anio estamos?(aaaa): ";
scanf ("%d",&regis.anio);
cout<<"Cual es su peso?: ";
scanf ("%a",&regis.peso);
fprintf(archivo,"\r\n# ");
fprintf(archivo, " Nombre: %s " " Dia: %d" " Mes: %d" " Anio: %d" " Peso: %g"
, nombre, regis.dia, regis.mes, regis.anio , regis.peso );


rewind(archivo);
do
{
c = fgetc(archivo);
if ( c == '#' )
{
numero++;
}

}while(c != EOF);

cout<<"El numero de registros es de "<<numero;

fclose(archivo);
}
else
printf("Error al crear archivo.");

return 0;
}

我认为这部分我哪里错了:

strcat(nombre,".dat"); 

archivo = fopen(nombre, "a+");

我试过这样写:

archivo = fopen(nombre".dat", "a+");

archivo = fopen(nombre,".dat", "a+");

这两个都没有

strcat(nombre,".dat");

先谢谢大家

最佳答案

看看这段代码:

 cout<<"Nombre del paciente: ";
scanf("%s", &nombre);

你把一个人的名字放在 nombre 里面。然后你这样做:

 strcat(nombre,".dat");

因此,您将 .dat 附加到 nombre 后,实际上变成了:nombre.dat 并使用它写入您的存档

顺便说一下,一旦你在大多数情况下使用“C”函数,请注意这更像是一个“C”问题而不是“C++”问题。

要解决这个问题,只需创建一个新变量并填充它,例如:

char filename[100];

strcpy(filename, nombre);
strcat(filename, ".dat");

关于c++ - 在 C++ 中创建 .dat 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17801065/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com