извините, если это глупый вопрос, но я немного неопытный C. Я пытаюсь создать простое соединение TCP/TCP. Вот как это работает: на сервере хранится несколько файлов, включая .txt и .jpg. Когда клиент хочет одного из них, он отправляет имя файла на сервер, считывая и записывая его в определенное место.Удалить первые слова из файла
Все работает нормально, за исключением того факта, что ответ сервера «RES данные о статусе состояния». Меня интересуют только данные , чтобы создать новый файл, но я не могу отказать в записи RES размеру статуса в выходной файл. Я пытался использовать strtok, но из-за этого получаю segfault, не знаю почему. Это раздел кода, в котором я получаю ответ от сервера и начинаю писать его в новый файл fp.
while(success == 0)
{
while(f_block_sz = recvfrom(fd2, buffer, sizeof(buffer), 0, (struct sockaddr*)&serveraddr2, &addrlen))
{
if(f_block_sz < 0)
{
printf("Receive file error.\n");
break;
}
int write_sz = fwrite(buffer, sizeof(char), f_block_sz, fp);
if(write_sz < f_block_sz)
{
printf("File write failed.\n");
break;
}
bzero(buffer, LENGTH);
}
printf("ok!\n");
success = 1;
fclose(fp);
}
Я даже не знаю, что лучше. Должен ли я удалить эти «бесполезные» слова перед тем, как писать в новый файл, или мне нужно отредактировать файл после его завершения?
Заранее спасибо.
Хм, интересно. Благодаря! Даже не подумал об этом. К сожалению, размер может быть от 1 до примерно 23000. Может ли быть способ прочитать, сколько символов до третьего «»? – bex91
нравится, сколько символов до 3-го "" или "пробела" ...? –
Точно. Я теперь думаю сделать что-то вроде этого: 'для (г = 1;; г ++) { fscanf (FP + 7, "% С", &c); если (с ==» «) возвращение г; еще fp ++; } '}' Это, наверное, неправильно, но я думаю, что вы поняли, что я хочу начать проверку строки после «RES ok», и когда я доберусь до «пробела», у меня будет начало данных Я бы заменил x на значение g.Я думаю, что это правильно? – bex91