Это бесконечный цикл:
while (name != "." || name != NULL) {
name++;
}
name
является char*
. Если интернированный строковый литерал "."
не хранится по адресу NULL
(это не так), то вы говорите, что цикл должен продолжаться вечно, потому что name
всегда будет либо не указывать на хранилище для "."
] или не указывает на NULL
. Хотя я считаю, что официально сравнивать несвязанные указатели, такие как "."
и name
, это неопознанное поведение, на практике большинство (все модели с плоской памятью?) Просто допускают произвольные сравнения указателей, и, поскольку вы никогда не разыменовываете указатель, вы никогда не пытаетесь прочитайте нераспределенные адреса, которые вы пересекаете (в конечном итоге вы бы сделали segfault), так что это будет продолжаться вечно.
Мне неясно, какова цель этого цикла (может быть, убрать начальные .
из «скрытых» имен файлов?), Поэтому я не могу предложить другое исправление, кроме как удалить его.
Объекты нуждаются в точке с запятой:
©
Firefox неправильно сверхполезен в этом случае.
©
© and ∞
∞ Другой подход, должен забыть об объектах и просто поместить простой символ UTF-8 там.
Не можете Вы использовать"©
" ?
Эта страница имеет список HTML-кодов для обычных символов.