我们在嵌入式系统编程(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]);
}
答案 0 :(得分:1)
当然,解决方案是“手动”读取输入,在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
。)