увеличение адреса буферного массива без изменения начального адреса массива, как показано в printf

#c

Вопрос:

итак, у меня есть массив, который я хочу пропустить несколько символов, чтобы я мог печатать, когда после первых нескольких символов в массиве это мой код

   char in_buffer[8000]={0};
  memcpy(in_buffer,REQUEST_1,8000);
  *(in_buffer 3);
  printf("%sn",in_buffer);
 

в этой строке я пропускаю 3 символа в начале (адрес 3), затем делаю
printf("%sn",in_buffer);

но я получаю printf с самого начала буфера

 GET / HTTP/1.1
Host: localhost:5000
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
 

в приведенных выше выходных символах в начале GET не следует печатать. как я могу это сделать, например, пропустить несколько символов с увеличением адреса массива с помощью оператора косвенного указания

Обновить

У меня есть эта функция

 void print(char *array)
{
  printf("%sn",array);
  if(strncmp(array,"rnrn",4)!=0)
  print(array 1);
  else{return;}
}
 

массив содержит

 #define REQUEST_1 "GET / HTTP/1.1rn" 
"Host: localhost:5000rn" 
"User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:93.0) Gecko/20100101 Firefox/93.0rn" 
"Accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8rn" 
"Accept-Language: en-US,en;q=0.5rn" 
"Accept-Encoding: gzip, deflatern" 
"Connection: keep-alivern" 
"Upgrade-Insecure-Requests: 1rn" 
"Sec-Fetch-Dest: documentrn" 
"Sec-Fetch-Mode: navigatern" 
"Sec-Fetch-Site: nonern" 
"Sec-Fetch-User: ?1rnrn" 
 

это делает то же самое, чтобы увеличить адрес, но это дает segFault, поэтому на самом деле я делаю то, что рекурсивно вызываю функцию печати с расширенным адресом и проверяю rnrn , найден ли, а затем, если найден, просто возвращаюсь. Но это не работает, что я делаю не так?

Комментарии:

1. in_buffer = 3;

2. @user3386109 Я получаю req.c:43:13: error: assignment to expression with array type 43 | in_buffer = 3; | ^~ ошибку с in_buffer =3

3. Ой, char *bufptr = in_buffer 3; а потом printf("%sn", bufptr);

4. @user3386109 почему он не работает в моем вызове функции, пожалуйста, посмотрите на обновление

Ответ №1:

Этот:

 *(in_buffer 3);  // Expression result unused
printf("%sn",in_buffer);
 

должно быть:

 printf("%sn",in_buffer   3);
 

Комментарии:

1. можете ли вы ознакомиться с обновлением вопроса

2. спасибо, что я допустил ошибку в обновленном коде вопроса. спасибо за помощь

3. @user786 Если у вас есть другой, не связанный с этим вопрос, задайте новый вопрос вместо того, чтобы редактировать этот.