gpt4 book ai didi

c - 无法将字符串保存到 log.txt

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:06 25 4
gpt4 key购买 nike

我正在制作一个聊天程序,它使用 recvsend 通过套接字发送和接收信息。现在我正在尝试添加一个功能,以便它自动将聊天记录保存到一个文件中。使用我现在所拥有的,它只会打开/创建文件,但不会向其中写入任何内容。

在第 46 行,它在聊天中打印“收到的消息”,第 63 行打印“自己的消息”。谁能发现我的错误?

  int ThereAndBackAgain(SOCKET *clientSocket){
char keyPress ='\0',tmp[200]={0};
int index=0, i = 0;
FILE *fp;
char buffer[256];
char nickName[10] = "Sneep";
memset(&buffer[0], 0, sizeof(buffer));
fp = fopen("chatlog.txt", "a");
do{
while(!kbhit()){

if (recv(*(clientSocket), buffer, 255,0) != -1){

printf("%s: \n",nickName);
printf("%s\n", buffer); //Prints received messages

fputs(buffer, fp);

memset(&buffer[0], 0, sizeof(buffer));
i = 0;
}
}
if(keyPress=tmp[index++]=getch()){
if(keyPress == '\r'){ // if user presses enter

for(i = 0; i < strlen(buffer); i++){
if (i == 0)
printf("\b ");
else
printf("\b\b ");
}
i = 0;
//print the message to a good spot on the screen
printf("\b%s\n",buffer); // Prints own messages
send(*(clientSocket),buffer,strlen(buffer),0);
memset(&buffer[0], 0, sizeof(buffer));
}
buffer[i] = keyPress;
printf("%c", keyPress);
if(keyPress == '\b'){ // if user presses backspace
printf(" \b");
buffer[i-1] = ' ';
i--;
}
else{
i++;
}
}

}while(buffer[0] != '#');

}

最佳答案

文件被创建是因为 fopen 创建了文件。但是,在您执行 fclose(fd) 之前,数据不会被保存。 C99 保证如果程序以returnexit() 结束,所有打开的文件都会关闭。

所以,如果..你不应该看到任何东西

  1. ...您正在使用 SIGINT (Cntl+C) 关闭您的程序。
  2. ...打开文件时程序仍在运行。

关于c - 无法将字符串保存到 log.txt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26693303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com