1) переменная i не изменяется. В этом случае цикл while ( s != '\0' ) превращается в while ( s[0] != '\0' ) и бесконечно крутится, до записи в файл никогда не дойдёт.
2) переменная i изменяется но строка не терминирована нулём (такие тоже есть), в этом случае цикл опять бесконечен, но при этом ещё и имеет место быть вылет за границы массива. До записи в файл опять никогда не дойдёт.
В общем, в этом примере есть явная ошибка - отсутствие i++, плюс имеется допущение, что строка всегда нуль-терминированная - значит, массив содержит хотя бы null, что делает корректным обращение к элементу с индексом 0, и гарантирует выход из цикла. Если строка не нуль-терминированная, то аж две возможности словить бяку: обращение к пустому массиву и бесконечность цикла.
Если в книжке подобное не описано - плохая книжка. Если описано - хорошая, а i++ просто ошибка, забыл он или наборщик-редактор-корректор... у меня на каждую сотню строк кода одна такая глупая ошибка находится


