프로그램 개선
이제 프로그램을 개선하여 사용자 친화적이고 견고하게 만들어 보겠습니다. 사용자가 프로그램을 다시 시작하지 않고 여러 숫자를 확인할 수 있도록 루프를 추가하고, 입력 유효성 검사도 추가합니다.
main.c 파일을 다음 코드로 업데이트합니다.
#include <stdio.h>
#include <string.h>
#include <ctype.h> // For isdigit function
int main() {
char number[20];
int flag, i;
char choice;
do {
flag = 0; // Reset flag for each iteration
// Prompt the user to enter a number
printf("\nEnter a number: ");
scanf("%s", number);
// Input validation - check if the input contains only digits and at most one decimal point
int valid = 1;
int decimal_count = 0;
for(i = 0; number[i] != '\0'; i++) {
if(number[i] == '.') {
decimal_count++;
if(decimal_count > 1) {
valid = 0;
break;
}
} else if(!isdigit(number[i])) {
valid = 0;
break;
}
}
if(!valid) {
printf("Invalid input! Please enter a valid number.\n");
continue;
}
// Check if the number is integer or float
for(i = 0; number[i] != '\0'; i++) {
if(number[i] == '.') {
flag = 1;
break;
}
}
// Display the result
if(flag) {
printf("The entered number is a floating point number.\n");
} else {
printf("The entered number is an integer number.\n");
}
// Ask if the user wants to continue
printf("\nDo you want to check another number? (y/n): ");
scanf(" %c", &choice);
} while(choice == 'y' || choice == 'Y');
printf("\nThank you for using the program!\n");
return 0;
}
이 개선된 버전에는 다음이 포함됩니다.
- 사용자가 여러 숫자를 확인할 수 있는
do-while 루프.
- 입력에 숫자만 포함되고 소수점은 최대 하나만 포함되는지 확인하는 입력 유효성 검사.
- 더 명확한 프롬프트와 피드백을 제공하는 사용자 친화적인 인터페이스.
이 개선된 버전을 컴파일하고 실행합니다.
cd ~/project
gcc main.c -o main
./main
다음을 포함한 다양한 입력을 사용하여 테스트합니다.
42와 같은 정수
3.14와 같은 부동 소수점 숫자
abc 또는 1.2.3과 같은 잘못된 입력
이 프로그램은 이러한 모든 경우를 적절하게 처리하고 종료하도록 선택할 때까지 계속해서 숫자를 확인할 수 있도록 해야 합니다.