Это потому, что b
не имеет «оставшиеся 252 байта». b
создается как указатель на память, которая содержит два символа <space>
и <nul>
и ничего больше.
Когда вы назначаете на b
, вы на самом деле меняете указатель на четыре символа a
, b
, c
и <nul>
, но после этого ничего не происходит что вы можете безопасно использовать.
strcmp
- это общепринятый способ сравнения строк в C, несмотря на те типы * namby-pamby strncmp
, которые говорят, что это небезопасно * a , но они не имеют правильного кодирования в C в первое место: -)
* a Это является небезопасным, если строки не могут заканчиваться нулем. Но опять же, если они не заканчиваются нулем, они технически не являются строками. Для обработки строк strcmp
является правильным инструментом для работы.