В C ++ все простые char
строки действительно называются завершенными нулями байтовыми строками .
Этот нулевой терминатор говорит всем функциям, обрабатывающим такие строки где заканчивается строка Если в строке отсутствует нулевой терминатор, она будет go вне границ, и у вас будет неопределенное поведение .
Если вы хотите иметь массив Символы, используемые в качестве строк, необходимо убедиться, что они содержат нулевой терминатор. В вашем случае это очень просто: не указывайте размер массива и используйте литеральные строки при инициализации:
char cmnd[] = "ls";
char flags[] = "a";
Теперь cmnd
будет массивом трех символов, и инициализируется, чтобы содержать 'l'
, 's'
и нулевой терминатор '\0'
. Точно так же flags
будет массивом из двух символов, инициализированным 'a'
и '\0'
.