0
Linux의 TCP 소켓을 통해 파일을 받으려고합니다. 그러나 나는 빈 파일을 얻는다. 그러나 1 번 줄을 삭제할 때 아무거나 괜찮습니다.C - 루프에 함수 fwrite()를 넣으면 파일에 쓸 수 없습니다.
확실 할 수while(1)
{
FILE *fp = fopen(file_name, "w");
if(NULL == fp)
{
printf("File:\t%s Can Not Open To Write\n", file_name);
exit(1);
}
bzero(buffer, BUFFER_SIZE);
int length = 0;
while((length = recv(new_server_socket_fd, buffer, BUFFER_SIZE, 0)) > 0)
{
if(fwrite(buffer, sizeof(char), length, fp) < length)
{
printf("File:\t%s Write Failed\n", file_name);
break;
}
bzero(buffer, BUFFER_SIZE);
}
한 가지는 "경우 (에 fwrite는 (...))"execude 원인이 나는 경우 밖으로 putchar ('A'를) 넣어 않는다는 것입니다 (: 서버 내 코드는 다음과 같습니다) 그리고 나는 나의 스크린에 약간의 "a"를 얻을 수있다. 모든 데이터는 반환하기 전에 소켓 new_server_socket_fd
'fwrite()'는 파일이 바이너리 모드로 열려 있다고 가정합니다. 텍스트 모드로 열었습니다 (기본값). 텍스트 모드에서 열면 가능한 결과 중 하나가 표시됩니다. 또한 외부 루프 내에서 파일 – Peter
@ Peter를 닫아야합니다. 텍스트 모드는 dos 일입니다. 유닉스 텍스트에서 단순히 캐리지 제어 문자가 있는지 여부입니다. 나는 무엇을 간과하고 있는가? – EvilTeach
가능한 [C 함수 fwrite()가 파일에 쓰지 않습니다] (http://stackoverflow.com/questions/29172591/c-function-fwrite-doesnt-write-in-file) – EvilTeach