字符串:
由字符组成的串形结构,结束标志是’\0’
存在方式:
字符串字面值:
“由双引号包含的若干个字符”,储存在代码段,只读,修改会产生段错误,地址,末尾隐藏了一个’\0’
const char* strp = “hello”;
sizeof(“hello”) 6 字符个数+1
字符数组:char str[] = {‘a’,‘b’,‘c’};
储存在栈内存,可以修改,需要手动添加\0
注意:字符数组不要设置数组的长度
一般使用字符串字面值来初始化字符数组
char str[] = “hello world!”;
输入:
char str[256];
scanf("%s",str); 不能输入带空格的字符串
gets(str); 输入字符串时不限制长度,有安全隐患
fgets(str,size,stdin); 可以设置只接受size-1个字符(会为\0预留位置),如果输入的字符不足size-1,会把\n一起接收
输出:
printf("%s",str);
puts(str);会自动添加换行
输出缓冲区:
程序输入的数据并不能立即显示到屏幕上,而是先存储到输出缓冲区内,满足一定条件后才显示。
1、遇到\n后
2、遇到输入语句时
3、当输出缓冲区满4k
4、程序结束
5、手动刷新 fflush(stdout)
缓冲区机制可以提高数据的读写速度
输入缓冲区:
程序不立即获取屏幕上输入的数据,而是按下回车键时程序才从输入缓