私は現在Cを勉強していますが、私はまだそれほど良くありません。私はいくつかの人々の名前を入力し、同時にその名前の.txtファイルを作成するプログラムを作成しようとしています。たとえば、「Richard」と入力すると、Richard.txtというファイルが作成されます。そして.txtファイルの中で、私は彼らの名前をもう一度書きたい。Cで異なるファイルにデータを書き込む
唯一の問題は、最初の名前を入力して最初の.txtファイルを作成すると、新しい名前を入力しても新しい.txtファイルが作成されないことです。しかし代わりに、最初の.txtファイルに2番目の名前を入れます。
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
struct personnel
{
char name[40];
};
int addPatient(struct personnel patient[], int noAgt);
void writeFile(struct personnel patient[], int noAgt, char filename[]);
void emptyBuffer(void);
int main()
{
struct personnel patient[50];
int ch = 'X';
int noAgt = 0;
char filename[100];
while (ch != 'q')
{
printf("\na)\tEnter new patient"
"\nb)\tWrite file"
"\nc)\tExit program"
"\n\nSelect: ");
ch = getche();
printf("\n\n");
switch (ch)
{
case 'a' :
noAgt = addPatient(patient, noAgt);
break;
case 'b' :
writeFile(patient, noAgt, filename);
break;
case 'c' :
exit(0);
}
}
}
int addPatient(struct personnel patient[], int noAgt)
{
printf("\nPatient %d.\nEnter name: ", noAgt + 1);
scanf("%39[^\n]", patient[noAgt].name);
while(getchar() != '\n')
{
;
}
return ++noAgt;
}
void writeFile(struct personnel patient[], int noAgt, char filename[])
{
int i;
FILE *fptr;
struct personnel rec;
strcpy(filename, patient[i].name);
emptyBuffer();
strcat(filename, ".aow.txt");
fptr = fopen(filename, "w");
for(i = 0; i < noAgt; i++)
{
rec = patient[i];
fprintf(fptr, "Name: %s ", rec.name);
}
fclose(fptr);
printf("\nFile of %d patients written.\n", noAgt);
}
void emptyBuffer(void) /* Empty keyboard buffer */
{
while(getchar() != '\n')
{
;
}
}
"int型addPatient(構造体の人事患者[]、int型noAgt)" 私は()のWriteFileに行く人の名前を入力ビットです。
"void writeFile(struct personnel patient []、int noAgt、char filename [])"ファイルの書き込み先のビットです。