Я пишу простую программу конкатенации строк.
Программа работает так, как я ее опубликовал. Однако я сначала написал его, используя следующий код, чтобы найти конец строки:
while (*s++)
;
Однако этот метод не сработал. Строки, которые я передал ему, не были правильно скопированы. В частности, я попытался скопировать «abc» в переменную char [], которая содержала «\ 0».
Из чтения книги C K & R похоже, что она должна работать. Эта компактная форма должна предпринимать следующие шаги.
- * с сравнивается с '\ 0'
- s указывает на следующий адрес
Так почему же это не работает? Я собираю с gcc на Debian.
Я обнаружил, что эта версия работает:
strncat(char *s, const char *t, int n)
{
char *s_start = s;
while (*s)
s++;
for ( ; n > 0 && *t; n--, s++, t++)
*s = *t;
*(s++) = '\0';
return s_start;
}
Заранее спасибо.