вы можете использовать
int a, b, d;
char c[5];
if (scanf("%4[^:]:%d:%d:%d", c, &a, &b, &d) != 4)
{
exit(EXIT_FAILURE);
}
//for your program example use scanf("%4s",c);
, чтобы избежать переполнения буфера.
для вашей строки, вы можете сканировать 4
символов (+1 для \0
), в противном случае вы будет проходить границы вашего массива, и это приведет к неопределенному поведению.
и если вы хотите хранить больше данных, например, хлеб в массиве c
, массив должен быть char c[6]
.
это все о наличии достаточного места, когда вы хотите сохранить данные, и добавление этого числа в scanf
, как scanf("%5s",c);
, не даст scanf
прочитать больше данных, чем у нас есть место.