는 내가 전달하고자하는 내가 문자열로 c_string를 변환하는 경우 그 최종 결과에 영향을 미칠 것인지, 기본적으로 내가 궁금해서 바이너리 파일이 c_string 다시 문자열로 c_string를 변환 할 때 read()를 사용한 후에 c_string을 보내서 텍스트 파일이 아닌 이진 파일을 읽었는지 확인한 다음 문자열에 넣고 c_string으로 다시 변환했습니다. 그것이 좋지 않다면 바이너리 형식으로 되돌릴 수있는 간단한 방법이 있습니까?데이터 표현 손실 때문에,
FILE *file = fopen(filename, "ab");
int size = 0;
do{
size = recvfrom(s, buffer, 128, 0, (LPSOCKADDR) &sa_in, &senderSize);
if(size > 0)
{
fwrite(buffer, sizeof(char), size, file);
}
}while(size > 0);
c_string (이진)은 문자열로 바뀌고 c_string으로 되돌아갑니다. 이렇게
FILE *file = fopen(filename, "ab");
int size = 0;
do{
size = recvfrom(s, buffer, 128, 0, (LPSOCKADDR) &sa_in, &senderSize);
if(size > 0)
{
string bufferstring(buffer);
strcpy(buffer, bufferstring);
fwrite(buffer, sizeof(char), size, file);
}
}while(size > 0);
문자열은 c_strings보다 1 바이트 커야합니까? – IceKing
아니요, C 문자열에 Null 종결자가 있습니다. 요점은 파일에서 읽는 데이터가 null이 아닌 127 바이트가 아닌 null 바이트가 아닐 수도 있다는 것입니다. 이 경우'string bufferstring (buffer);을 사용하면 모든 데이터를 포착 할 수 없습니다. –
나는 그것이 길이라고 생각하지 않는다. 나는 이것을 얻게되어있다 : \ üèDqi¿ τy \ ╦îI█! ♠ ö. ↑ ΣΣ ~ אא י. ', gO6Ö ↓ ╥√«tª4yⁿ ° μÆ╪f╔öIƒÖ╠▄ßφ'' ~ √ß┐> ░ + αâ│ ╜ [ùΩππ╓└↔s≡ ± 이즘 * ▼ bºo«d┘ ■ ≡Ñde ± òù♀½Ö \ uú½,하지만이 무엇입니까! \ üèDqi¿ · τy ¥ ╦îI █! ♠ ■ ö. ↑ ▒Σ ~ ë┼éì. ', gO6Ö ↓ ╥√«'μÆ╪f╔öIƒÖ╠▄ßφy' ° tª4yⁿ & ~ √ß┐> ░ + αâ│fZ╗ {O ₧ ╦ ╜! [ùΩππ╓ └↔s≡ ± Ism * ▼ bºo«dһ ■ ≡Ñde ± òù ½ Ö \ \ \ ½ ½ ½. 어떤 이유로 중간에 여분의 문자가 있습니다. – IceKing