использовать scanf("%4s")
.4 перед s
прекращает сохранение ввода после 4-го символа.
char buf[4];
scanf("%4s", buf);
printf("%s\n", buf);
input: 123abc
output: 123a
Это неправильное решение,так как он будет читать не только буквенно-цифровые символы.
Моя вторая попытка состояла в том, чтобы заменить scanf
на scanf("%4[a-zA-Z0-9]s", buf);
, но это остановилось бы на не алфавитно-цифровых символах, так что все равно ничего хорошего.
Aправильный путь будет следующим (цикл, сканирование 1 символа, проверка буквенно-цифровых символов):
char buf[32] = "";
for(unsigned idx = 0; idx < 4; )
{
int c = getchar();
if(isalnum(c))
{
buf[idx] = c;
idx++;
}
}
printf("%s\n", buf);