저는 C에서 사용자가 텍스트 파일에 저장된 연락처 정보를 입력하는 작은 주소록 프로그램을 만들려고합니다. 사용자가 새 연락처를 추가하기로 선택하면 프로그램에서 완료되면 다른 연락처를 추가할지 묻는 메시지가 표시됩니다. 나는 그들이 'n'을 입력하면 루프를 끝내야한다고 생각하는 if 문을 만들었거나 다른 것을 쓰면 다른 접촉을 계속합니다. 그러나 사용자가 'y'(또는 다른 것)을 입력하면 항상 1 회 루프 후에 종료됩니다.Do 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];':이 char 버퍼가 너무 작습니다. 그것은 합리적인 문자열을 저장할 수 없습니다. null 종결자를위한 공간이 필요합니다. 그리고 사용자가 "예"또는 "아니오"를 입력하면 어떻게됩니까? –