Estaba tratando de generar una matriz de caracteres terminada no nula en un archivo.C++ matriz terminada no nula que da como resultado
Lo cierto es que recibo paquetes y luego imprimo sus campos.
Ahora, como estos campos no tienen terminación nula, por ejemplo, un segmento de datos que tiene un tamaño de 512 pero que puede o no estar completamente ocupado.
Cuando escribo estos datos en un archivo estoy usando la función sobrecargada < < que no sabe nada de datos reales y solo busca la terminación del segmento de datos.
Entonces, ¿cómo puedo decirle a la función de salida que escriba solo este número número específico de bytes?
En lugar de utilizar algo como esto que es caro llamar cada vez:
enter code here
bytescopied = strncpy(dest, src, maxbytes);
if (bytescopied < 0) { // indicates no bytes copied, parameter error
throw(fit); // error handler stuff here
} else if (bytescopied == maxbytes) {
dest[maxbytes-1] = '\0'; // force null terminator
}
En su segunda llamada, el segundo parámetro completo es solo una forma indirecta de llamar al antiguo simple 'strlen'. Pero en ese caso, también puede utilizar la forma más idiomática de toda la declaración: 'stream << buffer'. –
No. strlen no se detendrá después de maxbytes. –
'strnlen' will. Una llamada strnlen se verá mucho más limpia: 'strnlen (buffer, maxbytes)'. Sin perder el tiempo con punteros ni nada – gnud