gpt4 book ai didi

c - scanf() 函数没有保持屏幕供用户输入数据

转载 作者:行者123 更新时间:2023-11-30 15:50:22 25 4
gpt4 key购买 nike

我使用 scanf() 来保持屏幕并在多线程客户端套接字程序中获取用户的输入。scanf() 此处未按住屏幕,用户无法输入数据。线程函数的代码为:

void *send_data(void *num)
{
int *sock_s=(int *) num;
int sock=*sock_s;
char msg[50];
printf("Enter data:");


while(1) {
scanf("%s",msg);
if(strcmp(msg,"exit")==0)
{
break;
}
send(sock_s,msg,sizeof(msg),0);
}
send(sock,msg,sizeof(msg),0);
}

创建该线程的代码是:

     status_s=pthread_create(&thread_s,NULL,send_data,(void *)&sock);
if(status_s==0)
printf("sending");

最佳答案

  • 您在标准输入中留下尾随换行符。这个问题是一个常见问题解答,每天至少有 5 次被问到。在此站点上搜索 scanf...解决方案:scanf("%s", msg); 或类似内容。
  • 您不能在线程内部使用普通的 scanf 和类似的库函数,它们不是线程安全的。
  • 就您的使用方式而言,scanf 很容易受到攻击,并且会导致缓冲区溢出。

关于c - scanf() 函数没有保持屏幕供用户输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15810823/

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