C语言字符串处理函数
目录
gets() && puts()
点击查看代码
#include<stdio.h>
int main(){
char str[100];
gets(str);
puts(str);
return 0;
}
/* char *gets(char *s)
功能:从标准输入读入字符,保存到指针s指定的空间,直到出现换行符或读到文件结尾
参数:
s:字符串首地址
返回值:
成功:返回读入的字符串的首地址
失败:NULL
与scanf("%s", str)的区别:
gets(str)允许输入的字符串中有空格
scanf("%s", str)不允许有空格,可以写成scanf("%[^\n]s", str)
注意:
scanf和gets都无法知道要读入的字符串s的大小,必须遇到换行符或读到文件结尾为止,
因此容易导致字符数组越绝,缓冲区溢出的情况。
*/
/* int puts(const char *s)
功能:在标准输出中输出s字符串,输出完成后自动输出一个'\n'
参数:
s:字符串首地址
返回值:
成功:非负数
失败:-1 */
fgets() && fputs()
点击查看代码
#include<stdio.h>
int main(){
char str[100];
fgets(str, 100, stdin);
fputs(str, stdout);
return 0;
}
/* char *fgets(char *s, int size, FILE *stream)
功能:从stream指定的文件内读入字符,保存到s指定的内存空间。直到遇到换行符、读到文件
结尾或已经读了size-1个字符位置,最后会自动加上字符'\0'作为字符串结束标志。
参数:
s:要读入的字符串在内存中首地址
size:指定最大读取字符串的长度(size-1)
stream:文件指针,如果是读键盘输入的字符串,固定写为stdin
返回值:
成功:成功读取的字符串
读到文件尾或出错:NULL
注意:
fgets()在读取通过键盘输入的字符串的时候,把用户输入的回车也看作字符串的一部分
scanf和gets通过键盘读字符串时,不包含结尾的'\n'。
但是,要优先保证最后一个字符是'\0',因此如果位置不够了,那么也可能不保留结尾的回车
由于fgets()指定了要读取的字符串的长度,因此相比于gets和scanf来说,fgets是安全的
*/
/* int fputs(const char *str, FILE *stream)
功能:将str指定的字符串写入到stream指定的文件中,字符串结束符'\0'不写入文件
参数:
str: 内存中字符串首地址
stream:文件指针,如果要写到屏幕,则为stdout
返回值:
成功:0
失败:-1 */
strlen()
- 注意strlen用来计算字符串有效长度,不能处理一般的字符数组,比如最后一个元素不是'\0'的字符数组,strlen会一直往后找一直到找到'\0'为止。
strcpy()
strncpy()
- 有限拷贝不会将'\0'拷贝到目标字符串中去。即如果要拷贝的字符n超过了源字符串src的长度,那么剩余部分用'\0'填充,但是如果只拷贝少量字符到dest中去,则不会在dest中自动加上'\0'作为终止符(理论上是这样,实际不一定,,,,)。
strcat()
strcmp()
- 比较的时候,是依次取出每一个字符然后比较ascii码。
sprintf()
- 其实就是将多个可能是字符串也可能不是字符串的变量,都合并到一个字符串中去,比如下边的例子,把整型的123,和字符串"hello"合并到字符数组dest中去。即将多个变量格式化成一个字符串。
- 格式化的方式与scanf,printf中相同。
sscanf()
- 与sprintf相反,是将一个字符串拆分到多个变量中。
strchr()
- 这没啥好说的,在一个字符串中查找某个字母第一次出现的位置,返回值是个地址
strstr()
- 在一个字符串中查找另一个字符串
strtok()
- 用分隔符来分解字符串,每次返回分割后的第一个字符串。需要注意的一点是,要不断分割就要不断调用strtok函数,但是从第二次调用开始第一个参数要用NULL,而不能是原字符串了,因为那个字符串已经被改变了,分隔符位置变成了'\0'。
- 如果第二个参数是一个字符串,则字符串中的每个参数都可以作为分隔符。
- 在while循环中再次分割时可以选用不同的分隔符
- 不得不说的是,这个函数真jer难用。
atoi()
- 就是把字符串转成数值类型。
- 要转换的字符串中数字必须在前边,或者数字前边只有空格,像"hello 1222"这样的字符在前边的字符串是没办法转换的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】