字符:
?? 在计算机中是以整型形式存储的,当需要显示时会根据ASCII表中对应的关系显示出相应的符号和图案
?? ?? 字符 ?? ????? ?? ASCII值 %c: ??? ‘\0’ ?? %d: ????? ?? 0 ?? ???‘0’ ?? ?? ?? ?? ?? 48 ????? ‘A’ ?? ?? ?? ?? ?? 65 ????? ‘a’ ?? ?? ?? ?? ?? 97
字符的输入: ?? scanf("%c",&ch); ?? ch=getchar(); 字符的输出: ?? printf("%c",ch); ?? putchar(ch);
串:
是一种数据结构,由一组类型相同的若干个数据组成,末尾有结束标志 对于这种数据结构都是批量性的,从开头位置一直处理到结束标志为止
字符串:
由字符组成的串型结构,结束标志是’\0’
字符串的输入:
scanf("%s",地址); 缺点: 不能输入空格
char * gets(char * s); 功能: 输入字符串,并且可以接收空格 返回值: 链式调用(把一个函数的执行结果,通过返回值作为另一个函数的参数)
char * fgets(char * s, int size, FILE * stream); 功能: 可以设置输入的字符串的长度为size-1,超出部分不会接收,它会为’\0’预留位置 s: 内存首地址 size: 字节数 stream: stdin 注意:如果输入的字符不足size-1,最后的\n会被一起接受
字符串的输出:
printf("%s",地址);
int puts(const char * s); 功能:输出一个字符串,还在末尾自动添加一个\n 返回值:成功输出的字符个数
字符串的存在形式:
字符数组:
char str[10]={‘a’,‘b’,‘c’…}; 由char类型组成的数组,要为’\0’预留位置,初始化麻烦 使用的是栈内存,数据可以随意修改
字符串字面值:
“由双引号包含的若干个字符”, 在末尾隐藏一个’\0’,字符串字面值是以地址形式存在的,数据存储在代码段中,如果修改就会段错误
注意:它的结束标记是加在末尾的
printf("%d\n",sizeof(“123123”)); 注意:字符个数+1 printf("%d\n",sizeof§); 注意:指针的字节数 4 | 8 两个一模一样的字符串字面值在代码段只有一份
常用方式: 字符数组[]=“字符串字面值”; 会自动给’\0’预留位置
?? 赋值完成后字符串会存在两份,一份在代码段,另一份在栈内存(可以修改) 字符串的相关的常用操作:
#include <string.h>
size_t strlen(const char * s); 功能: 计算字符串长度,不包括’\0’ 注意:sizeof 和 strlen 的区别
char * strcpy(char * dest, const char * src); 功能: 把src拷贝到dest,相当于给dest赋值 = 返回值:链式调用
char * strcat(char * dest, const char * src); 功能: 把字符串src追加到dest后面,想当于 += 返回值:返回dest,链式调用
int strcmp(const char * s1, const char * s2); 功能: 比较两个字符串的大小,按照字典序比较,谁在前面谁小,只要比较出结果立即返回,后面的不再比较 返回值: s1 > s2 正数 s1 < s2 负数 s1 == s2 0
char * strncpy(char * dest, const char * src, size_t n); 功能: 把src前n个字符拷贝给dest char * strncat(char * dest, const char * src, size_t n); 功能: 把src前n个字符追加到dest后面 int strncmp(const char * s1, const char * s2, size_t n); 功能: 比较前n个字符的大小
char * strstr(const char * haystack, const char * needle); 功能: 查找haystack,是否存在needle 返回值:needle首次在haystack中出现的位置,如果找不到,返回NULL。 char * strchr(const char * s, int c); 功能: 查找s中是否有字符c 返回值:c在s中首次出现的位置,不存在返回NULL
#include <stdlib.h>
int atoi(const char * nptr); 功能: 字符串转int类型 long atol(const char * nptr); 功能: 字符串转long类型 long long atoll(const char * nptr); 功能: 字符串转 long long类型 double atof(const char * nptr); 功能: 字符串转double类型
|