一:字符串的定义:本质上是一个字符数组
char s[3]={'A','B','\0'};//或者char s[]={'A','B','\0'};
char s[]="ABC";//如果不指定字符串长度,则默认长度是3+1;
注意:要用'\0'做结尾,所以要比实际的多一位,但是字符串数组可以不加;
要用双引号,单个字符用单引号;
输出用%s 单个字符用%c
二:关于gets getchar puts putchar scanf 的注意事项
int main(){
/*
char s[]="ABSHI SHIh";
char c='sjhd';
puts(s);//ABSHI SHIh
putchar(c);//d 只输出一个字符并且只输入最后一个字符
char a[10];
scanf("%s",a);//shuzb shuz
//不同点:scanf不会接受空白字符 但是gets会接受空白字符 。相同点:都是以回车键输入结束
puts(a);//shuzb
*/
/*
char a;
a=getchar();//hsua hzu
putchar(a);//h 只会输出一个字符
*/
/*
char b;
scanf("%c",&b);//shu shu
putchar(b);//s
*/
}
小知识的补充:
//\t 空格8位
//每个汉字都是两个字符 一个字符8个字节 字符串-用双引号括起来的零个或多个字符 " "—— 空字符串(包含一个空格的)
//自动加上一个结束符号‘\0’表示结束
三:字符串函数:*在使用字符串函数之前需要包含string.h头文件
//strcpy(目标位置,原来的字符串) 后边的赋值给前面 目标位置内容被覆盖 后面的位置中内容不变
//strcpy字符串拷贝(不能利用等号进行赋值。例如str1==str2)
//strcpy(a,"梁lele");
//如果想要 把若干个strcpy函数调用连起来使用:strcpy(str1,strcpy(str2,'''china''));
//strncpy()函数功能类似strcpy 但是它有第三个参数num可以用于限制所复制的字符数——
char *strncpy(char *destination, const char*source,size_t num);
//char a[10]="张三",b[10]="李四";
//计算字符串的长度 或者strlen(b)
//printf("%d\n",strlen(b)) ;
//strcat(b,a);//将两个字符串链接在一起;将a追加到b上,a中的原有内容保持不变,返回新的b
*注意:b中必须要有足够的空间可以容纳a。
//printf("%s",b);//如果将b改为a 则输出的值为梁lele;
//比较字符串大小 strcmp 前边大则返回一个正整数 前面小则返回一个负数 两者相等返回0;
//char a[10]="ad123",b[10]="abc456";
//printf("%d\n",strcmp(a,b));
//字符串分解函数strtok——char *strtok(char *str,const char*delim):返回字符串str中delimma分隔符分隔的字串,当查找到字符串str末尾时,返回NULL.
参数:str,待分割的字符串(c-string);delimiters,分割符字符串。
该函数用来将字符串分割成一个个片段。参数str指向欲分割的字符串,参数delimiters则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delimiters中包涵的分割字符时,则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针。
需要注意的是,使用该函数进行字符串分割时,会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。第一次分割之后,原字符串str是分割完成之后的第一个字符串,剩余的字符串存储在一个静态变量中,因此多线程同时访问该静态变量时,则会出现错误。
//判断字符数组中是否都为数字或字符
//char a[10]="1FDA1123"
//int n;
//for(n=0;n<strlen(a);n++)
//if(!a[n]>='A'&&a[n]<='Z')//判断数字if(!a[n]>='0'&&a[n]<='9')
//break;
//if(n=strlen(a))
//printf("是");
//else
//printf("否") ;
//strspn ——size_t strspn(char const *str, char const *grouo);
理解:从str的第一个元素开始往后数,看str中是不是连续往后每个字符都在group中可以 。 到 第一个不在gruop的元素为止。看从str第一个开始,前面的字符有几个在group中。
//char a[10]="454df8a",b[10]=""1234//长度为7 占10个字符
//printf("%d",strspn(a,"0123456789"));//输出3 判断有几个数字符号
//if(strspn(b,"0123456789")==strlen(b))//判断数组是否为纯数字 也可判断是否为纯字母
//printf("是");
//else
//printf("否");
其中2表示25, 11表示25,142,330,(包含逗号)