我试图在C中创建一个小型地址簿程序,用户可以输入存储在文本文件中的联系信息。如果用户选择添加新联系人,程序应该询问他们是否在完成后添加另一个联系人。我做了一个if语句,如果他们输入'n',或者如果他们另外写入其他联系人,则认为应该结束循环。但是,如果用户键入'y'(或其他任何东西),它总是在1循环后退出。虽然while循环始终在第一个循环后退出
void new_contact(void){
printf("Ready for new contact\n");
int enter_new_contact = 1;
char first_name[15];
char second_name[20];
char phone_number[12];
char email[50];
char y_n[1];
do{
printf("Enter the contacts first name.\n");
scanf("%s", first_name);
printf("Enter the contacts second name.\n");
scanf("%s", second_name);
printf("Enter the contacts phone number.\n");
scanf("%s", phone_number);
printf("Enter the contacts email.\n");
scanf("%s", email);
printf("%s\t%s\t%s\t%s\n", first_name, second_name, phone_number, email);
printf("Would you like to add another contact?\n");
scanf("%s", y_n);
printf("%s\n", y_n);
if(strcmp(y_n, "n")==0){
enter_new_contact=0;
}
}while(enter_new_contact==1);
}
在此先感谢!
第一件事:解决不确定的行为,如'焦炭y_n [1];'是不是大到足以容纳一个字符,一个空终止符。 –
'char y_n [1];':这个字符缓冲区太小了。它不能容纳任何明显的字符串。您需要空终止符的空间。当用户输入“是”或“否”时会发生什么? –