Это потому, что строка в C оканчивается на 0. Поэтому, когда вы делаете это printf("%s", uga);
, функция будет печатать символы, пока не найдет элемент 0, а затем остановится. Но в uga
его нет, поэтому он будет печатать символы из стопки. Это неопределенное поведение. Попробуйте это
#include <stdio.h>
int main(){
char a = 'o';
char b = 'k';
char uga[3];
*(uga) = a;
*(uga+1) = b;
*(uga+2) = 0; // adding string terminating 0
printf("%s", uga);
}