안녕하세요 모두 .dat 파일을 만들어야합니다. 사용자가 넣은 파일의 이름을 지정해야하며이 파일에는 이름이 포함되어 있어야합니다 (이름이 모두 함께 사용되는 경우 중요하지 않음).), 날짜 및 그/그녀의 체중. 이제 문제는 파일 "name".dat가 만들어 지지만 파일 안에는 내 프로그램 대신 사용자 이름이어야한다는 것입니다. 파일 이름과 확장명처럼 "이름".dat로 표시됩니다. 나는 이런 식으로 퍼 팅 시도했습니다C++에서 .dat 파일 만들기
strcat(nombre,".dat");
archivo = fopen(nombre, "a+");
:
#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;
}
나는 내가이 부분 틀렸다 위치를 생각 : 여기 나에게 코드
archivo = fopen(nombre".dat", "a+");
및
archivo = fopen(nombre,".dat", "a+");
위의 두 thout the
strcat(nombre,".dat");
여러분 께 진심으로 감사드립니다.
문자 배열 대신 문자열을 사용하십시오. 그리고 당신과 함께 일관되게하기 위해서는 cin을 사용해야합니다. 또한 FILE *은 C 코드에서 사용되는 것으로, fstream (더 자주 쓰는 이래로 파일의 읽기가 아닌)의 사용을 제안합니다. – Borgleader
@Borgleader 실제로 프로그램 끝에서 파일에 얼마나 많은 레지스트리가 있는지 계산해야하기 때문에 파일을 읽어야한다고 생각합니다. – Gustavo
미안하지만, 나는 정말로 당신의 문제 또는 당신이 달성하기를 원하는 것을 undestand하지 않았다. – Amadeus