ЕСЛИ userArgs имеет тип char
, тогда вы сравниваете строку с символьными константами while (userArgs[k] != ">")
и if(userArgs[k] == ">")
Таким образом, фактически адрес строк в двоичном файле программы сравнивается со значением символа.Обратите внимание, что ">"
является строковой константой и представлена некоторым адресом, где хранится строка. '>'
является символьной константой и имеет значение.
IF userArgs
равно char *
, тогда высравнение адреса местоположения userArgs[i]
в программном стеке или куче (если динамически выделено) с адресом строки ">"
, хранящейся в двоичном файле программы и загруженной ОС в память.Эти ячейки памяти будут время от времени меняться и не связаны с их содержимым.Чтобы сравнить содержимое воспоминаний, которые вы должны использовать while (strcmp (userArgs[k], ">") != 0)
.ИЛИ чтобы не звонить strcmp
, возможно, вы захотите сделать следующее while ((userArgs[k][0] != '>') && (userArgs[k][1] == '\0')
Приведенные выше примеры потребуют изменений в соответствии с вашими потребностями.