Online Compiler C

#include <stdio.h> #include <string.h> int main() { char str[200]; gets (str); strlen(str); for(int i=0;i<strlen(str);i++){ if(str[i]==' '){ str[i]='_'; } } printf("%s",str); return 0; }
这段代码的功能是:读取用户输入的一行字符串,然后将其中所有的空格字符替换为下划线,最后输出替换后的结果。

代码中存在一个潜在的安全问题:

- `gets` 函数没有限制输入长度,如果用户输入超过199个字符,会导致缓冲区溢出,这是不安全的做法。建议使用 `fgets` 替代。

另外,循环条件中每次迭代都调用 `strlen(str)` 会降低效率,因为字符串长度在循环过程中不会改变,可以提前将长度保存到一个变量中。