这个学期我们有一个嵌入式系统编程(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/

10-11 19:05