Ввод можно принимать по одной цифре за раз с %1d
.
Получите следующий символ, используя %c
, чтобы увидеть, является ли он новой строкой. Если нет, используйте ungetc
для замены символа во входном потоке.
%.*s
примет аргумент количества символов для печати и напечатает value
number of *
.
#include <stdio.h>
int main( void) {
char stars[] = "**********";
char ch = 0;
int value = 0;
printf ( "enter number\n");
while ( 1 == scanf ( "%1d", &value)) {
printf ( "%d%.*s", value, value, stars);
if ( 1 == scanf ( "%c", &ch) && '\n' != ch) {
ungetc ( ch, stdin);
}
else {
break;
}
}
printf ( "\n");
return 0;
}
со входом 3256w
это работает без символа
#include <stdio.h>
int main( void) {
int value = 0;
printf ( "enter number\n");
while ( 1 == scanf ( "%1d", &value)) {
printf ( "%d", value);
while ( value) {
value--;
printf ( "*");
}
fflush ( stdout);
}
printf ( "\n");
return 0;
}