Используйте время или, когда вы хотите проверить условие в начале цикла, делайте ... до тех пор, пока вы не хотите проверить в конце. Если вы хотите проверить в середине, я предпочитаю бесконечный цикл ("while (TRUE)" или "for (;;)") и использование if / break в середине. Если взять ваш цикл, это будет:
while (TRUE){
scanf("%c", &c1);
if (c1=='*') {
break;
}
printf("c1: %c \n", c1);
}
Некоторым людям это не нравится, альтернатива - сделать это функцией, используя return вместо break:
boolean get_and_print_if_not_end() {
scanf("%c", &c1);
if (c1=='*') {
return true;
}
printf("c1: %c \n", c1);
return false;
}
Youя бы назвал это в базовом цикле while:
while (!get_and_print_if_not_end()) {
// Nothing to do here.
}