#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 Если у вас есть другой, не связанный с этим вопрос, задайте новый вопрос вместо того, чтобы редактировать этот.