char buffer[BUF_SIZE] = { 0, };
fwrite(buffer, 1, sizeof(buffer), in);
간단하게 요약해서 에코서버에서 입력한 모든걸 txt 파일에 저장하는 과정에서 막혓습니다
마지막에 입력한거만 입력이 되는데 입력한 모든걸 집어넣을려면 어떻게 해야하나요 도와주세요 ㅠㅠ
char buffer[BUF_SIZE] = { 0, };
fwrite(buffer, 1, sizeof(buffer), in);
간단하게 요약해서 에코서버에서 입력한 모든걸 txt 파일에 저장하는 과정에서 막혓습니다
마지막에 입력한거만 입력이 되는데 입력한 모든걸 집어넣을려면 어떻게 해야하나요 도와주세요 ㅠㅠ
fclose를 안해서?
fopen 이랑 fclose는 당연히 했습니다 텍스트파일은 생성이 되는데 그 안에 데이터가 마지막에 입력한거만 나옵니다 입력한 모든 데이터를 출력하게 하고 싶은데 혹시 방법 아십니까?
buffer에 디버거 심어봐 제대로 들어가나
어떻게 하나요?
너 쓰는 툴에 디버거 심는법 검색해서 하면 됨 아니면 소스 전체를 올리던가
#include"MySocket.h"int main(void){ printf("+++++++++++++++++++++++++++\n"); printf("Echo client ver1.0\n"); printf("Written by nobody,Oct.31,2019 \n"); printf("+++++++++++++++++++++++++++\n"); int errorCode = -1233; //WSAStartup
WSADATA wd = { 0, }; errorCode = WSAStartup(MAKEWORD(2, 2), &wd); if (errorCode) ErrorDisplay("WSAStartup"); else OK("WSAStartup"); //socket SOCKET clientSocket; clientSocket = socket(AF_INET, SOCK_STREAM, 0); if (clientSocket == INVALID_SOCKET) ErrorExit("socket"); else OK("socket");
//connect SOCKADDR_IN serverAddress = { 0, }; wchar_t server_IPPort[] = SERVER_IPPORT; int sizeServerAddress = sizeof(serverAddress); errorCode = WSAStringToAddressW(server_IPPort, AF_INET, NULL, (SOCKADDR*)&serverAddress, &sizeServerAddress); if (errorCode == SOCKET_ERROR) ErrorDisplay("WSAStringToAddressW"); else OK("WSAStringToAddressW");
errorCode = connect(clientSocket, (SOCKADDR*)&serverAddress, sizeof(serverAddress)); if (errorCode == SOCKET_ERROR) ErrorDisplay("connect"); else OK("connect"); char buffer[BUF_SIZE] = { 0, };
FILE *in = 0; fopen_s(&in, "1.txt.", "w"); if (in == NULL) { printf(" 생성 실패 \n"); } //printf("Echo입니다.원하는 데이터를 입력하세요\n"); printf("++++++++++++++++\n"); printf("Echo Client\n"); printf("++++++++++++++++\n"); printf("if you want to quit,press 'q' or 'Q'\n");
while (-9) {memset(buffer, 0, BUF_SIZE); printf(">>"); fgets(buffer, BUF_SIZE, stdin); if (!strcmp(buffer, "q\n") || !strcmp(buffer, "Q\n")) { break; }
errorCode = send(clientSocket, buffer, strlen(buffer) + 1, 0); if (errorCode == SOCKET_ERROR) { ErrorDisplay("send"); } else OK("send"); memset(buffer, 0, BUF_SIZE); errorCode = recv(clientSocket, buffer, BUF_SIZE, 0); if (errorCode == SOCKET_ERROR) { ErrorDisplay("recv"); }
//else if(errorCode==0) else if (!errorCode) { printf("server closed\n"); break; } else OK("recv"); }
printf("프로그램을 종료합니다.\n"); //closesocket errorCode = closesocket(clientSocket); if (errorCode == SOCKET_ERROR) ErrorDisplay("closesocket"); else OK("closesocket"); //WSACleanup errorCode = WSACleanup(); if (errorCode == SOCKET_ERROR) ErrorDisplay("WSACleanup"); else OK("WSACleanup");
fwrite(buffer, 1, sizeof(buffer), in); fclose(in); getchar(); return 0;
간단한 에코 클라이언트 입니다
fwite말고 fputs로 해봐
fputs 써도 마지막 글자(q) 만 입력됩니다.
근데 BUF_SIZE가 얼마임?
100 입니다
ssize_t nbytes; while ((nbytes = fread(buffer, sizeof(char), sizeof(buffer), stdin)) > 0) if (fwrite(buffer, sizeof(char), nbytes, fp) != nbytes)
저걸 fputs 자리에 쓰면 되는건가요?
해결했습니다 형님 소중한 댓글 감사합니다