Я работаю с программой, написанной на C, которая включает сравнение переписанных фамилий. Например, это может сравнить Мэри Джей-Блайдж с Мэри Кей-Блайг.
Код, который находит дефис и устанавливает переменную в его позицию:
APT_String LAST_NAME
char * p_ich;
int iPosHyphen;
p_ich = strchr(LAST_NAME,'-');
iPosHyphen = p_ich-LAST_NAME+1;
где APT_String - тип данных для IBM DataStage.
Я унаследовал приведенный выше код, и он, кажется, «работает», но я хотел бы получить некоторые пояснения по операции p_ich-LAST_NAME+1
.
А именно, если strchr()
возвращает местоположение первого '-', как C обрабатывает эту арифметику?
Если я позвоню cout<<p_ich;
, я получу -Blige
. Итак, я думаю, что он возвращает остаток строки, как только указанный символ найден?