【发布时间】:2013-07-23 03:34:30
【问题描述】:
大家好,我必须创建一个 .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");
先谢谢大家了。
【问题讨论】:
-
请使用字符串而不是字符数组。为了与 cout 保持一致,您应该使用 cin。 FILE* 也是 C 代码中使用的东西,我建议使用 fstream (更具体地说是 ofstream,因为你正在写入它而不是从文件中读取)。
-
@Borgleader 实际上我认为我必须阅读该文件,因为在程序结束时我必须计算文件中有多少个注册表。
-
对不起,我真的不明白你的问题是什么,或者你想要达到什么目的
-
@Gustavo 为什么在你写它们的时候不计算它们?
-
@TomásBadan 我的问题是在文件中它应该是用户名,例如“TomasBadan”,但它却显示为“TomasBadan.dat”。现在我想保存用户名、他/她注册体重的日期和他/她的体重。最后应该会在屏幕上显示该文件有多少注册表。
标签: c++ file stdio createfile strcat