0

こんにちは、私は .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");

ありがとうございます。

4

2 に答える 2

1

次のコードを見てください。

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

nombre人の名前を入れます。次に、これを行います。

 strcat(nombre,".dat");

したがって、効果的になるものに追加.datし、それを使用してアーカイブに書き込みますnombrenombre.dat

ところで、これは「C++」の質問というよりも「C」の質問であることに注意してください。この大部分で「C」関数を使用している場合。

これを解決するには、次のように新しい変数を作成して入力します。

char filename[100];

strcpy(filename, nombre);
strcat(filename, ".dat");
于 2013-07-23T03:52:42.827 に答える
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+");
于 2013-07-23T03:51:27.453 に答える