单字符输入输出

putchar()

image.png
putchar()的参数只能是一个字节大小的int(即char类型)
输出失败时的返回值为EOF**(Enf Of File)**(-1的宏定义值)

getchar()

image.png
getchar()的返回值为输入的字符,
如果想让其返回EOF,win系统按CTRL+Z

getchar(),可从终端获得一个字符的ASCII码值。在终端输入字符时并非输入一个字符就会返回,而是在遇到回车换行前,所有输入的字符都会缓冲在键盘缓冲器中,直到回车换行一次性将所有字符按序依次赋给相应的变量,在这里一定要注意最后一个字符即’\n’,该字符也会赋给一个相应的变量(当然这要你定义的用来接收字符的变量数比你输入的可见字符多一才可以)。

gets()

char gets(char str) 从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。当读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。
image.png

例子

image.png
该程序的whie循环,getchar()一次只能读到一个字符(回车也被读到),不断循环,形成下列效果
image.png

image.png

string.h

image.png

strlen()

image.png
size_t strlen(const char *s) const表示不会修改s指向的字符串的值
image.png
自己构建的strlen()函数
image.png

strcmp()

image.png
strcmp() 会根据 ASCII 编码依次比较 str1 和 str2 的每一个字符,直到出现不到的字符,或者到达字符串末尾(遇见\0)。

特别注意:strcmp(const char s1,const char s2) 这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。
ANSI 标准规定,返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。
当两个字符串不相等时,C 标准没有规定返回值会是 1 或 -1,只规定了正数和负数。
有些会把两个字符的 ASCII 码之差作为比较结果由函数值返回。但无论如何不能以此条依据作为程序中的流程逻辑。
image.png
image.png
自己构建的strcmp()函数
数组方法
image.png
指针方法
image.png

strcpy()

image.png
函数返回值为dst字符串,方便继续参与运算

strcpy()函数被广泛使用,dst和src在内存中不能相互重叠,避免多线程分段执行时产生错误
image.png

复制一个字符串

image.png
src可能是临时产生的字符串,不知道它具体的大小。使用动态分配内存函数,为dst实时分配内存大小,再复制src给dst。
数组写法
image.png
指针写法
image.png

strcat()

image.png
image.png

安全问题

image.png
image.png

字符串搜素函数

image.png
如何寻找第2个字符
image.png
函数会返回第一次出现字符的地址,将返回值赋值给一个指针,再次使用该函数即可(指针地址要加1)

如何把搜素到字符之后的内容复制给另一个字符串
image.png

如何输出搜素字符之前的字符
image.png
把搜索函数返回的地址所指向的内容变为’\0’,再次打印该字符串
完成该操作后再把储存的c(即字符串被改变的内容)重新赋值
image.png

字符串中找字符串

image.png
strcasestr()函数在寻找过程中会忽略大小写。
**