Если вы хотите разрешить возможность того, что любая из строк может быть меньше позиции, которую вы хотите сравнить:
/* Return 1 if s1[n] > s2[n], 0 if s1[n] == s2[n], -1 if s1[n] < s2[n].
Return -2 if any of the strings is smaller than n bytes long. */
int compare_nth(const char *s1, const char *s2, size_t n)
{
size_t i;
for (i=0; i < n; ++i)
if (s1[i] == 0 || s2[i] == 0)
return -2;
if (s1[n] < s2[n])
return -1;
else if (s1[n] > s2[n])
return 1;
else
return 0;
}
Затем, чтобы сделать что-то, когда n
й символы равны, вы можете сделать:
if (compare_nth(s1, s2, n) == 0) {
/* do whatever you want to do here */
}
Если вы точно знаете, что в каждой из строк есть хотя бы n
символов, вы можете просто сделать то, что сказали другие:
if (s1[n] == s2[n]) {
/* do whatever you want to do here */
}
(Примечание: поскольку индексирование в C начинается с 0, n
здесь используется в том же смысле. Таким образом, для проверки вторых символов, n
будет 1
.)