Как ваши массивы не предназначены для размещения строк, то соответствующий код может выглядеть следующим образом
#include <stdio.h>
int main()
{
char in[] = {'a','b','c','d','f','r','t','b','h','j','l','i'};
size_t n = sizeof(in);
char out[3];
memcpy(out, in, sizeof(out));
n -= sizeof(out);
memmove(in, in + sizeof(out), n);
printf("%*.*s\n", n, n, in);
printf("%*.*s\n", sizeof(out), sizeof(out), out);
return 0;
}
Выход программы
dfrtbhjli
abc
Примите во внимание, что вы должны отслеживать фактическое длина массива в.
Другой пример
#include <stdio.h>
int main()
{
char in[] = {'a','b','c','d','f','r','t','b','h','j','l','i'};
size_t n = sizeof(in);
char out[3];
printf("%*.*s\n\n", n, n, in);
while (!(n < 3))
{
memcpy(out, in, sizeof(out));
n -= sizeof(out);
memmove(in, in + sizeof(out), n);
printf("%*.*s\n", sizeof(out), sizeof(out), out);
}
return 0;
}
Выход программы
abcdfrtbhjli
abc
dfr
tbh
jli
Используйте указатель или скопируйте требуемый фрагмент; массивы не могут быть назначены. – Downvoter
@AndrejsCainikovs Это неправильно во многих отношениях. 'printf' принимает' char * ', а не' char', он даже не компилируется. –
@MarkSegal: https://ideone.com/FyMERy Да, я сделал одну глупую ошибку, не печатая ни одного символа.Но, пожалуйста, укажите все способы, по которым я был неправ. –