- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的代码有一个问题:每当我想添加一个新病人时,就会发生一些可疑的事情。如果我一次写一个病人然后退出登记,我输入的病人就会在文件中找到。但是,如果我一次写入多个患者,则只会保存最后一个患者的输入,其余的则不会保存。我相信这与我的阵列有关,但我无法确定。有什么建议吗?
代码如下:
FILE *patientfile;
char answer;
patientfile= fopen("test.txt", "a");
if (!patientfile)
{
printf(" Failed to open file.\n");
}
do
{
int i=0;
printf(" Enter details of patient %d\n\n", i+1);
printf(" Patients first name: ");
scanf("%s",arr_patient[i].fname);
printf(" Last name: ");
scanf("%s",arr_patient[i].lname);
printf(" Personnummer: ");
scanf("%d", &arr_patient[i].birthdate);
printf(" Bildref: ");
scanf("%d", &arr_patient[i].bildref);
printf(" Do you want to add someone else?: (y/n):");
scanf(" %c",&answer);
i++;
}while(answer != 'n');
int i = 0;
fprintf(patientfile," %s\t%s \n ", arr_patient[i].fnamn,arr_patient[i].lnamn);
fprintf(patientfile," %d \n",arr_patient[i].birthdate);
fprintf(patientfile," %d \n",arr_patient[i].bildref);
fclose(patientfile);
}
编辑:问题已解决!谢谢大家!
最佳答案
这是应该做的(我在代码中嵌入了关于问题的注释)
char answer;
// NOTE: this must be outside the loop
int i=0;
do
{
printf(" Enter details of patient %d\n\n", i+1);
printf(" Patients first name: ");
scanf("%s",arr_patient[i].fname);
printf(" Last name: ");
scanf("%s",arr_patient[i].lname);
printf(" Personnummer: ");
scanf("%d", &arr_patient[i].birthdate);
printf(" Bildref: ");
scanf("%d", &arr_patient[i].bildref);
printf(" Do you want to add someone else?: (y/n):");
scanf(" %c",&answer);
i++;
}while(answer != 'n');
FILE *patientfile = fopen("test.txt", "a");
if (!patientfile) printf(" Failed to open file.\n");
// NOTE: You need to loop over the array and write all the patients to the file
for(int j=0; j<i; j++)
{
fprintf(patientfile," %s\t%s \n ", arr_patient[j].fnamn,arr_patient[j].lnamn);
fprintf(patientfile," %d \n",arr_patient[j].birthdate);
fprintf(patientfile," %d \n",arr_patient[j].bildref);
}
fclose(patientfile);
但实际上您并不需要数组。您可以像这样直接将患者写入文件:
FILE *patientfile = fopen("test.txt", "a");
if (!patientfile) printf(" Failed to open file.\n");
char answer;
int i=0;
do
{
// change patient_struct to your structure name
patient_struct patient;
printf(" Enter details of patient %d\n\n", i+1);
printf(" Patients first name: ");
scanf("%s",patient.fname);
printf(" Last name: ");
scanf("%s",patient.lname);
printf(" Personnummer: ");
scanf("%d", &patient.birthdate);
printf(" Bildref: ");
scanf("%d", &patient.bildref);
fprintf(patientfile," %s\t%s \n ", patient.fnamn, patient.lnamn);
fprintf(patientfile," %d \n", patient.birthdate);
fprintf(patientfile," %d \n", patient.bildref);
printf(" Do you want to add someone else?: (y/n):");
scanf(" %c",&answer);
i++;
}while(answer != 'n');
fclose(patientfile);
关于c - 如何添加不断询问用户输入并将所有输入保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263404/
如果这不是一个错误,那就是另一个错误。如果不是那样的话,那就是别的东西了。我觉得我的项目已经改变了很多,现在只是试图解决代码签名问题,结果一切都搞砸了。我严格按照说明进行操作,但出现错误,例如当前的“
我不确定是否有一些我不知道的内置变量或规则,或者 make 是否有问题,或者我只是疯了。 对于我的一个项目,我有一个如下的 makefile: CC=g++ CFLAGS=-O3 `libpng-co
我有大约 10 个 div,它们必须不断翻转,每个 div 延迟 3 秒 这个 codrops 链接的最后一个效果是我正在寻找的,但无需单击 div http://tympanus.net/Devel
我如何使用 jQuery 持续运行 PHP 脚本并每秒获取响应,以及将鼠标上的少量数据发送到同一脚本? 我真的必须添加一些随机扩展才能让这么简单的计时器工作吗? 最佳答案 To iterate is
JBoss 4.x EJB 3.0 我见过如下代码(大大简化): @Stateless @TransactionAttribute(TransactionAttributeType.NOT_SUPPO
使用 PHPStorm,我试图忽略每次尝试进行 git 提交时 pop 的 workspace.xml。 我的 .gitignore 看起来像: /.idea/ .idea/workspace.xml
我是一名优秀的程序员,十分优秀!