LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

В первых двух не очень очевидно, кто в кого вложен и как оба счётчика себя ведут.

В первых двух явно указано (с поправкой на синтаксис ЯП), что оба счётчика меняются параллельно. На Паскале параллельное изменение двух счётчиков сделать конструкцией языка нельзя. Можно либо сделать один более главным (и у читающего возникнет вопрос: почему именно этот?) либо переделать вообще в while.

А тем, кто пишет, как в первом варианте, я бы в голову гвоздь забил.

Вы точно не любите паскаль? Для сишника первый вариант — общеиспользуемая идиома. Например

char *strncpy(char *s1, const char *s2, int n)
{
  char *r = s1;
  for(int i = 0; i<n && *s2; s1++, s2++, i++) *s1 = *s2;
  *s1 = 0;
  return r;
}

Исходная версия monk, :

В первых двух не очень очевидно, кто в кого вложен и как оба счётчика себя ведут.

В первых двух явно указано (с поправкой на синтаксис ЯП), что оба счётчика меняются параллельно. На Паскале параллельное изменение двух счётчиков сделать конструкцией языка нельзя. Можно либо сделать один более главным (и у читающего возникнет вопрос: почему именно этот?) либо переделать вообще в while.

А тем, кто пишет, как в первом варианте, я бы в голову гвоздь забил.

Вы точно не любите паскаль? Для сишника первый вариант — общеиспользуемая идиома. Например

char *strncpy (char *s1, const char *s2, size_t n)
{
  for(int i = 0, char *r; i<n && *s2; r++, s2++, i++)
    *r = *s2;
  return s1;
}