может кто-нибудь сказать мне, что здесь делает программа?C++ считать значение указателя символа []
if (*p1 == '\0' || *p2 == '\0') {
return (*p2 == '\0') - (*p1 == '\0');
}
я правильно, если программа сравнения pointerposition к nullcharacter (последний символ) , и если один из них так, то она возвращает длину указателя p2 в положении nullcharacter, вычитают из длины указателя p1 на nullcharacter?
вот моя полная программа:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int strcmp_ign_ws(const char *s1, const char *s2) {
const char *p1 = s1, *p2 = s2;
int count(0);
while (true) {
while (*p1 != '\0' && (*p1 == ' ')) p1++;
while (*p2 != '\0' && (*p2 == ' ')) p2++;
if (*p1 == '\0' || *p2 == '\0') {
return (*p2 == '\0') - (*p1 == '\0');
}
if (*p1 != *p2) {
count += (unsigned char)*p2 - (unsigned char)*p1;
}
p1++;
p2++;
}
return count;
}
int main() {
char a[] = "Hallo Weltt";
char b[] = "Hallo Welt";
int result(0);
result = strcmp_ign_ws(a,b);
cout << result << endl;
return 0;
}
№. Оператор 'return' выдает два булевых выражения; что бы это ни было полезно. –