C语言字符串函数s_gets()
2021/9/23 23:13:07
本文主要是介绍C语言字符串函数s_gets(),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C语言字符串函数s_gets()
《C Primer Plus》335-336页
char* s_gets(char* st, int n) { char* ret_val; int i = 0; ret_val = fgets(st, n, stdin); if (ret_val) { while (st[i] != '\n' && st[i] != '\0') i++; if (st[i] == '\n') st[i] = '\0'; else while (getchar() != '\0') continue; } return ret_val; }
有些时候为了避免换行符储存在字符串中,字符串中有换行符可能会带来一些麻烦,就创建了s_gets()函数,其作用是读取整行输入并用空字符代替换行符,或读取一部分输入,并丢弃其余部分
如果fgets成功读取到了字符串则进入if判断语句,通过循环找出字符串中的换行符或空字符
fgets函数读到换行符时就会停止读入字符,如果找到换行符,if语句就会将其变为空字符并返回字符串,若while循环读取到了空字符,由于空字符象征着字符串的结束,此时需要丢弃输入行的余下字符。
因为输入行中多出来的字符会被留在缓冲区中,成为下一次读取语句的输入,假设下一条语句要读取一个char类型的值,就可能导致程序崩溃,丢弃输入行余下的字符保证了读取语句和键盘输入同步
以上文字解析摘自知乎
这篇关于C语言字符串函数s_gets()的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享