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

标签 c++ file stdio createfile strcat

大家好,我必须创建一个 .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/

相关文章:

java - 基于每个文件同步对文件的访问

C 程序读取 ascii 文本文件但输出是 ISO-8859

python - 如何在不等待输入的情况下检查可能为空的标准输入?

c++ - <winsock.h> 和 <winsock2.h> 之间有区别吗?

c++ - 使用 gcc 编译器时,未在此范围内声明“memcpy”

c++ - 确定二叉搜索树的高度 C++

c - 在 C 中使用 getchar() 退格和多字节字符

c++ - 使用数组聚合初始化结构数组

file - 在 SharePoint 中自动附加或预先添加使用日期或随机数上传的文件的名称

c++ - 使用 stdio 在 Unix 和 C++ 上重定向输入和输出文件