c语言字符串知识总结

由上面的例子可以知道111和222,222和333之间的换行符\n被丢弃,只有333后面的换行符\n被遗留在缓冲区,因为a和b按%s读取内容时,自动丢弃了缓冲区最前面的换行符\n,然后第一个getchar()读取了缓冲区的第一个字符:'\n',后面两个getchar()则分别读取了‘a’、‘b’,语句运行到这里,其实缓冲区还遗留着c'\n',若想清除,可以使用语句while(getchar()!='\n');

而下面的代码段则验证了空字符‘\0’就是数字0

再一个,无论从终端显示屏输入数字、字母还是啥,都是默认的字符型,再由编译器转换为相应的数据类型存入相应的变量。

然后给字符数组赋初值时,如果只赋部分,则剩余的未赋值元素默认设为数值0,即空字符‘\0’,此时该字符数组相当于一个字符串;如果全部元素都赋值,字符数组结尾没有空字符。 若分别用字符串打印函数打印它们,则第一个打印数组第一个空字符之前的所有元素,第二个则顺着相邻内存一直往下打印,直到遇到第一个空字符为止:

sizeof()计算的是系统为参数分配的空间大小,参数可以是数组、变量,数据类型;而strlen()的参数可以是字符串或字符串指针,它的原理是计算指针所指的地址到第一个结尾空字符‘\0’的空间大小。所以当数组(或字符串)做函数参数时,自动退化为指针,在该函数内部使用sizeof()得到的是系统为该指针分配空间的大小,而strlen()则依然能计算出数组大小:

当用连续的scanf()或getchar()连续读取字符时,如果一旦开启了读取缓冲区“模式”,且缓冲区非空,后面的语句会自动执行,而不是执行一句等待换行符信号再执行一句:

猜你喜欢

转载自blog.csdn.net/m0_37829435/article/details/79610696