Я разрабатываю простое клиент-серверное приложение, и теперь у меня проблема с чтением файла на стороне сервера. Вот код:Получить количество ненулевых байтов fread()
int size;
for (i = 0; i < parts; i++) {
size = fread(buffer, 1, 256, file);
printf("size: %i \n", size);
send(sockfd, buffer, size, 0);
/* ... */
}
Я полагал, что если fread()
может читать только (например) 50 байт, то размер будет 50, но это не так. Это все еще 256. Есть ли простой способ, как получить число не нулевых байтов?
'fread' действительно возвращает количество элементов (а не байтов, обычно), которые он читает. Разумеется, это не имеет значения * значения * этих байтов. –
Когда он находится рядом с концом файла (менее 256 байт), почему он «читает» байты, которые не находятся в этом файле? И читать их как нулевые байты и возвращает 256? Я думал, что это так ... – user2275785
Это не так. У вас должна быть ошибка в другом месте. 'fread' делает все, что нужно. –