#include <stdio.h>
#include <stdlib.h>
void star(int);
void main()
{
int temp;
char ttt[100] = { 0, };
while (1){
printf("몇개");
scanf("%[^\n]%*c", &ttt);
temp = atoi(ttt);
if (temp % 2 == 1 && temp < 101)
{
star(temp);
}
else if (temp == 0)
printf("오류\n");
else
printf("오류\n");
}
}
void star(int temp)
{
int i, j;
int under = 0;
for (i = temp; i > 0; i -= 2) {
for (j = i / 2; j > 0; j--) {
if (i == temp) under++;
printf(" ");
}
for (j = 0; j < temp - ((i / 2) + (i / 2)); j++) {
printf("*");
}
printf("\n");
}
for (i = 1; i <= under; i++) {
for (j = 0; j < i; j++) {
printf(" ");
}
for (j = 0; j < temp - (i * 2); j++) {
printf("*");
}
printf("\n");
}
}
줄 수를 입력받은 다음 줄수만큼 별을 찍는 코드인데 문제가 예외처리입니다 ㅠㅠ
조건이 0을 입력받을때까지는 계속 줄 수를 입력받고
공백문자만 입력하거나 또는 1 a 또는 a 5처럼 이렇게 입력받아도 오류가 떠야 되는데 문제가
문자열이 입력되면 정수값을 0을 리턴해버려서 0을 입력하면 종료 하게 만들 수가 없고 ㅠㅠ a 5를 입력하면 정상적으로 오류메세지가 나오는데
3 a이런식으로 입력하면 3을 넣은 값이 나오더라구요 ㅠㅠㅠㅠ
어떤식으로 예외처리를 해야될까요