Ниже приводится программа, которую я столкнулсяХотя цикл без условия
#include <stdio.h>
void sp_to_dash(const char *str);
int main(void)
{
sp_to_dash("this is a test");
return 0;
}
void sp_to_dash(const char *str)
{
while(*str) //beginning of while loop
{
if(*str== ' ')printf("%c", '-');
else printf("%c", *str);
str++;
}
}
В начале while
цикла мы можем видеть, что while(*str)
инициируется без каких-либо условий, что означает, что не упоминается, что когда *str
следует остановиться на null
или '\0'
. Код работает нормально, однако, по моему мнению, это должно быть как while(*str != null)
или while(*str != '\0')
. Пожалуйста, объясните это мне.
Сказать, что код должен быть 'while (* str! = Null) {...}' четко указывает, что не имеет четкой разницы между пустыми строками, нулевыми указателями и символом 'NUL' ASCII' '\ 0'' (и BTW нулевой указатель равен 'NULL', а не' null'). Это заболевание, несколько распространенное среди новичков C, но вы должны это исправить как можно скорее. – 6502