问题描述
在此代码中,不允许执行第一个代码,因为如果用户进一步想要执行并再次重复该过程,我希望它提供一个选项。第二件事是,如果用户键入 y 进行进一步保存,我想一次又一次将其保存在 CSV 文件中。
提供选项的代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int allowmain(void) {
char select_option[2];
int answer = -1;
while (answer < 0) {
printf("Do you want it to repeat (y/n)? ");
if (fgets(select_option,2,stdin) == NULL)
break;
switch (select_option[0]) {
case 'y':
answer = 1;
break;
case 'n':
answer = 0;
break;
}
}
if (answer < 0)
answer = 0;
return answer;
}
要执行的代码
int main() {
FILE *fw = fopen("new.csv","a");
char data[3][21],input[20];
int done = 0,repeat = 0;
while (!done) {
if (repeat) {
if (!allowmain())
break;
}
repeat = 1;
for (int i = 0; i < 3; i++) {
printf("Enter a word: ");
fgets(data[i],20,stdin);
}
fprintf(fw,"%s %s %s",data[0],data[1],data[2]);
return 0;
}
}
解决方法
最简单的方法是将main函数提取到自己的函数中。您可以在执行过程中包装该函数,并且只要allowmain
返回true即可继续运行:
void write_words() {
FILE * fw = fopen("new.csv","a");
char data[3][21],input[20];
for (int i=0; i<3; i++) {
printf("Enter a word: ");
fgets(data[i],20,stdin);
}
fprintf(fw,"%s %s %s",data[0],data[1],data[2]);
fclose(fw);
}
int main() {
do {
write_words();
} while (allowmain());
}