C の文字列が「どういうものか」が分かっていれば、なんとなくプログラムの形が見えてくると思います。
厳密に言えば、C には文字列などというものはありません。
しかし C には「配列」があります。
配列は、要素をいくつか並べたものです。
要素は、整数だったり実数だったりポインタだったり、いろいろなものが要素になれるのですが、
「要素が char 型(これは整数型である)で」、かつ「要素のどこかに必ず 0 が入っている」配列
を、「文字列と『見なす』」ことにしています。
また、そのような配列の要素を先頭から見ていって、最初に見つかる「値 0 の要素」を、その文字列の終わりと「見なします」。
なお、「文字列」における値 0 の整数要素を、特に「ナル文字」とか「ヌル文字」などと呼び、これは 0 と書いても良いのですが、「いかにも文字っぽく」、'\0' と書くのが C の通例です。
つまり、C における "HELLO C" という文字列は、次のような配列なのです。
要素[0]='H'
要素[1]='E'
要素[2]='L'
要素[3]='L'
要素[4]='O'
要素[5]=' '
要素[6]='C'
要素[7]='\0'
値が 0 の要素は文字列の長さには含まれません。 つまり、この文字列は、
「配列の添え字は 0 から 7 まで、配列の要素数は 8、文字列の長さは 7」
ということになります。
while で文字列の末尾まで処理したい場合は、1文字ずつ進めていって、その文字が '\0' だったらループを抜ける、という条件を while に書けば良い、という事です。