对于scanf的%s来说,它通过空格或者换行符来识别一个字符串的结束;

fgets识别换行符\n,作为输入的结束;

因此对于将要输入的一个字符串来说如果中间存在空格,则需要使用fgets,其他则两者都一样。

⚠️:使用fgets的时候,如果前面使用scanf输入过整数,则需要使用getchar函数来接收整数后的换行符。

⚠️:使用fgets格式一般为

char str[18];

fgets(str, 19,  stdin);

19的原因是因为,末尾还要存储一个\0作为结束标志。


用strlen(str)得到的长度为str实际长度+1