字符和字符串
字符是构成源程序的基本单位,在程序中,当一个字符被一对单撇号阔起来的话,就被认定为一个字符常量。
字符串是一对双撇号阔起来的,组成字符串的可以是字母数字以及各种字符。、
字符串本来就是一个字符数组,只不过多了个\0
字符
printf("%d",str[i]);输出的是字符h , e , l , l, o所对应的ASCII码表的值;又因为定义的数组长度为10,所以后面没有初始化的都以0输出。
printf("%c",str[i]);输出的是字符h e l l o;
getchar();结束标志换行,每次只输出一个字符,带回显
getch();不带回显,立刻返回
getche(); 带回显,立刻返回
scanf ("%s")输入时,可以一直输入,获取内容,但是碰到回车,空格 ,tab时,虽然还能继续输入,到那时再碰到这些字符时就会不在获取,会内存溢出。
而scanf ("%5s"),就限制只能获取五个字符
gets会获取所有输入的内容,最后的换行会丢弃
fgets(数组名 ,需要的数量,stdxuin)
puts(),碰到'\0',自动结束并换行
实例,写一个函数,实现类似fgets()的功能。首先输入需要确定要拿字符的长度,然后输入字符,当输入的字符等于'\n'的时候结束,所以(ch!='\n')作为循环条件,然后fgets()的话,相当于最后一个字符拿了\0,所以显示拿了四个字符。
字符处理函数
test_isalnum();
test_isalpha();
test_islower();
test_isupper();
test_isdigit();
test_isxdigit();
test_iscntrl();
test_isgraph();
test_isspace();
test_isblank();
test_isprint();
test_ispunct();
test_tolower();
return 0;
}
void test_isalnum(){
char ch;
int ret;
//isalnum
ret=isalnum('2'); //数字返回4
ret=isalnum('k'); //字母返回2
ret=isalnum('K'); //大写字母返回1
ret=isalnum(' '); //符号返回0
ret=isalnum(12); //符号返回0
printf("ret=%d",ret);
}
void test_isalpha(){
int ret;
ret = isalpha('a'); //返回2
ret = isalpha('A'); //返回1
ret = isalpha('\n'); //返回0
ret = isalpha(' '); //返回0
printf("%d",ret);
}
//判断是否为小写字母
void test_islower(){
int ret;
ret = islower('a'); //小写字母返回2
ret = islower('A'); //大写字母返回0
ret = islower('\n'); //返回0
ret = islower(' '); //返回0
printf("%d",ret);
}
//判断是否为大写字母
void test_isupper(){
int ret;
ret = isupper('A'); //大写字母返回1
ret = isupper('a'); //小写字母返回0
ret = isupper('\n'); //返回0
ret = isupper(' '); //返回0
printf("%d",ret);
}
//判断是否为数字
void test_isdigit(){
int ret;
ret = isdigit('A'); //大写字母返回0
ret = isdigit('a'); //小写字母返回0
ret = isdigit('\n'); //返回0
ret = isdigit(' '); //返回0
ret = isdigit('8'); //返回1
ret = isdigit(49); //返回1
printf("%d",ret);
}
//判断是否为16进制
void test_isxdigit(){
int ret;
ret = isxdigit('A'); //大写字母返回128
ret = isxdigit('a'); //小写字母返回128
ret = isxdigit('\n'); //返回0
ret = isxdigit(' '); //返回0
ret = isxdigit('8'); //返回128
ret = isxdigit(0XFD3); //返回0
ret = isxdigit(98); //返回128
printf("%d",ret);
}
//判断控制字符
void test_iscntrl(){
int ret;
ret = iscntrl('A'); //大写字母返回0
ret = iscntrl('a'); //小写字母返回0
ret = iscntrl('\n'); //返回32
ret = iscntrl(' '); //返回0
ret = iscntrl('8'); //返回0
ret = iscntrl(0XFD3); //返回0
ret = iscntrl(98); //返回0
ret = iscntrl('\t'); //返回32
printf("%d",ret);
}
// 判断是否为图形字符
void test_isgraph(){
int ret;
ret = isgraph('A'); //大写字母返回1
ret = isgraph('a'); //小写字母返回2
ret = isgraph('\n'); //返回32
ret = isgraph(' '); //返回0
ret = isgraph('8'); //返回4
ret = isgraph(0XFD3); //返回0
ret = isgraph(98); //返回2
ret = isgraph('J2[]'); //返回16
ret = isgraph('Hj8/!'); //返回16
printf("%d",ret);
}
// 判断是否为空格字符
void test_isspace(){
int ret;
ret = isspace('A'); //大写字母返回0
ret = isspace('a'); //小写字母返回0
ret = isspace('\n'); //返回8
ret = isspace(' '); //返回8
ret = isspace('8'); //返回0
ret = isspace(0XFD3); //返回0
ret = isspace(98); //返回0
ret = isspace('J2[]'); //返回0
ret = isspace('Hj8/!'); //返回0
printf("%d",ret);
}
//判断是否为空白字符
void test_isblank(){
int ret;
ret = isblank('A'); //大写字母返回0
ret = isblank('a'); //小写字母返回0
ret = isblank('\n'); //返回0
ret = isblank(' '); //返回1
// ret = isblank('8'); //返回0
// ret = isblank(0XFD3); //返回0
// ret = isblank(98); //返回0
// ret = isblank('J2[]'); //无返回结果
// ret = isblank('Hj8/!'); //无返回结果
printf("%d",ret);
}
//判断是否可打印字符
void test_isprint(){
int ret;
ret = isprint('A'); //大写字母返回1
ret = isprint('a'); //小写字母返回2
ret = isprint('\n'); //返回0
ret = isprint(' '); //返回64
ret = isprint('8'); //返回4
ret = isprint(0XFD3); //返回0
ret = isprint(98); //返回2
ret = isprint('J2[]'); //16
ret = isprint('Hj8/!'); //16
printf("%d",ret);
}
判断是否为标点
void test_ispunct(){
int ret;
ret = ispunct('A'); //大写字母返回0
ret = ispunct('a'); //小写字母返回
ret = ispunct('\n'); //返回0
ret = ispunct(' '); //返回0
ret = ispunct('8'); //返回0
ret = ispunct(','); //返回16
ret = ispunct(98); //返回0
ret = ispunct('J2[]'); //16
ret = ispunct('Hj8/!'); //16
printf("%d",ret);
}
//判断是否为标点
void test_tolower(){
int ret;
ret = tolower('A'); //大写字母返回a
ret = tolower('a'); //小写字母返回a
ret = tolower('\n'); //返回
ret = tolower(' '); //返回32
ret = tolower('8'); //返回8
ret = tolower(','); //返回44
ret = tolower(98); //返回0
ret = tolower('J2[]'); //16
ret = tolower('Hj8/!'); //16
printf("%c",ret);
}
0728作业
1.编写一个函数,需要一个指向字符串的指针变量作为参数,并返回字符串的长度。main函数调用进行测试。
#include <stdio.h>
int main(){
// char *cha;
int a;
int *ch="ashaskfhhgshghgiohurtsioskdg"
// cha = ch;
// printf("%c",*cha);
a=test(ch);
printf("%d",a);
return 0;
}
int test(char *p){
int ret=0;
// int i;
while(*p!='\0'){
p++;
ret++;
}
return ret;
}
2.设计一个函数,其参数为一个字符串指针,并且返回一个指针,该指针指向
字符串中所指位置后(包括该位置)的第一个空格字符,如果找不到空格字符,
就返回空指针
#include <stdio.h>
char test(char *p);
int main(){
char *ch="asd dfg";
char *a;
a=test(ch);
printf("%c",a);
// printf("%#p",&a);
return 0;
}
char test(char *p){
while(*p!='\0'){
p++;
if(*p==' ')
return p;
} // return ;
//
// return ret;
}