while (scanf("%c", &a) != '#') {

i++;

}

이런식으로 해놓으면

i++이 문자열 길이만큼 실행되는거야?

문자가 여러개니까 문자에 문자열 대입하면 그만큼 사이클 돌려주는건가??