这个学期我们有一个嵌入式系统编程(C)项目。我做了一个客户端/服务器程序(聊天程序),但是我的教授说,当我使用fgets时,它并不友好,但是我不知道为什么。
这是我的资料来源:
if (argc == 4){
strcpy(nick, argv[3]);
strcat(nick,":");
}
else if (argc == 3){
printf ("Please type your Nickname!\n");
fgets (nick,sizeof(nick),stdin);
nick[strlen(nick)-1]=':';
}
else{
usage (argv[0]);
}
最佳答案
然后,解决方案当然是“手动”读取输入,从而导致用C语言编写了很多指令,但要谨慎使用资源和CPU:
else if (argc == 3) {
printf ("Please type your Nickname!\n");
int i= 0;
while ((c=fgetc(stdin))!='\n' && i<sizeof(nick)-2) nick[i++]= c;
nick[i++]=':'; nick[i++]= '\0';
}
(这假定nick是一个字符数组,而不是指针。否则,必须将nick的大小作为参数给出,并且
sizeof(nick)-2
变为nick_size-2
。)关于c - 以正确的方式使用fgets(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30509733/