字符、字符串:定义、输入输出方法
字符
在计算机中是以整型形式存储的,当需要显示时会根据ASCII表中的对应关系显示出相应的符号或图案
字符的输入
scanf("%c",&ch);
ch = getchar();
字符的输出
printf("%c",ch);
putchar(ch);
串
是一种数据结构,是由一组类型相同的若干个数据组成,末尾有结束标志
对于这种数据结构的处理都是批量性的,从开头位置一直处理到结束标志为止
字符串
由字符组成的串型结构,结束标志是
字符串的输入
scanf("%s",地址);
缺点:不能输入空格
char *gets(char *s);
功能:输入字符串,并且可以接受空格
返回值:链式调用(把一个函数的执行结果,通过返回值作为另一个函数的参数)
char *fgets(char *s, int size, FILE *stream);
功能:可以设置输入的字符串的长度为size-1,超出部分不会接受,它会为 预留位置
s:内存首地址
size:字节数
stream:stdin
注意:如果输入的字符不足size-1,最后的 会被一起接受了
字符串的输出
printf("%s",地址);
int puts(const char *s);
功能:输出一个字符串,会在末尾 自动添加一个
返回值:成功输出的字符个数
字符串的存在形式
字符数组
char str[10] = {a,b,c...};
由char类型组成的数组,要为 预留位置,初始化麻烦
使用的是栈内存,数据可以随意修改
字符串字面值
"由双引号包含的若干个字符"
int *p = "12345"
在末尾隐藏一个
字符串字面值是以地址形式存在的,数据存储在代码段中,如果修改就会段错误
注意:它的结束标志是加在末尾的
printf("%d",sizeof("12345"));
注意:字符个数+1 == 6
printf("%d",sizeof(p));
注意:指针的字节数4|8
多个一模一样的字符串字面值在代码段只有一份
常用方式
字符数组[] = "字符串字面值";
会自动给 预留位置
赋值完成后字符串会存在两份,一份在代码段,另一份在栈内存(可以修改)
练习2:实现一个函数,判断字符串是否是回文串
"abccba" "abcba"
练习3:实现一个函数,把数字组成的字符串转换成整数
"1234" 1234
练习4:实现一个函数,把一个字符串逆序
"abcd" "dcba"
