標準入力からオーバーフローを起こす危険性無しに文字列を
読み取る方法を考えているのですが、

for(i = 0; i <= sizeof(str)-2; i++){
cc = getchar();
if(cc == '\n'){
str[i] = '\0';
break;
}else{
str[i] = (char)cc;
}}
if(i == sizeof(str)-1){
str[i] = '\0';
}

↑と

fgets(str, sizeof(str), stdin);
p = strchr(str, '\n');
if(p == NULL){
str[sizeof(str)-1] = '\0';
}else if{
*p = '\0';
}

↑では、どちらの方が実行速度が速くなるのでしょうか?