大家好我必须创建一个.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",®is.dia);
cout<<"En que mes estamos?: ";
scanf ("%d",®is.mes);
cout<<"En que anio estamos?(aaaa): ";
scanf ("%d",®is.anio);
cout<<"Cual es su peso?: ";
scanf ("%a",®is.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");
先谢谢你们。
答案 0 :(得分:1)
看看这段代码:
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");
答案 1 :(得分:0)
您将.dat
添加到包含用户名称的变量中,因此您不再拥有该名称。您需要为用户的名称和文件名使用不同的变量。
char nombre[100], filename[100], c;
cout<<"Nombre del paciente: ";
scanf("%s", &nombre);
getchar();
strcpy(filename, nombre);
strcat(filename,".dat");
archivo = fopen(filename, "a+");