设为首页 加入收藏

TOP

C语言和指针使用之条件操作符、计算字符串长度讲解
2017-12-14 14:31:33 】 浏览:317
Tags:言和 指针 使用 条件 操作 计算 字符串 长度 讲解

1.条件操作符

例如:

a>5?b-6:c/2

可以读作“a是不是大于5?如果是就执行b-6,否则执行c/2

在什么场合使用比较好呢

例如:

if(a>5)

b[2*c+d(e/5)]=3;

else

b[2*c+d(e/5)]=20;

这里改用条件操作符就很方便

b[[2*c+d(e/5)]=a>5?3:20

2.计算字符串长度

虽然库里面已经有了,但是自己可以编写一个学习一下

int strlen(char *string)

{

int length=0;

/* 依次访问字符串内容,计算字符数,直到遇见NUL终止符*/

while(*string++!=’\0’

length+=1;

return length;

}

3.递归问题

例如:需要将一个整数转换成可以打印的字符形式,一般采用的策略就是反复除以10,并打印余数,但是转换成字符有个简便的方式

‘0’+0=’0’;

‘0’+1=’1’;

‘0’+2=’2’;

这样余数加上‘0’就可以转化了,但是输出的值是反着的,故可用递归的思想解决

void binary2ascii(unsigned int value)

{

unsigned int quo;

quo=value/10;

if(quo!=0)

binary2ascii(quo);

putchar(value%10+’0’);

}

4.字符数组的初始化

按照一般的理解,你可能会认为字符数组的初始化是这样

char message [] ={‘H’,’e’,’l’,’l’,’o’,0};

这个方法看起来很笨拙,有更高端的写法

char message[]=”Hello”;

尽管看起来像字符串,实际上不是以下才是初始化字符串

char *message=”Hello”;

5.作为函数参数的多维数组

int matrix[3][10]

func2(marix)

/有以下两种方法声明函数/

void func2(int (*mat)[10] );

void func2(int mat[ ][ ]);

另外值得注意的是,多维数组的存储顺序是根据最右边的下标优先变化的原则确定。

6.关于字符串查找

6.1查找一个字符

在一个字符串中查找一个字符最简单的方法是使用strchr和strrchr函数,函数原型如下

char *strchr(char const *str,int ch);
char *strrchr(char const *str,int ch);

注意第二个参数是个整型值,strchr在字符串str中ch第一次出现的位置,找到后函数返回一个指向更改位置的指针。如果该字符并不存在与字符串中,函数就返回一个NULL指针。str函数功能与其类似,只是它返回的是该字符串中该字符最后出现的位置。例如:

char string[20]="Hello there";
char *check;

check=strchr(string,'h');

check所指向的位置是string+7,因为第一个h出现在这个位置,注意此处大小写是有区别的。

6.2查找人和几个字符串

strpbrk是个更为常见的函数,它并不是查找某个特定的字符串,而是查找任何一组字符第一次在字符串中出现的位置,它的原型如下:

char *strpbrk(char const *str ,cahr const *group);

这个函数返回一个指向str 中第一个匹配group中任何一个字符的字符位置,如果未找到匹配,函数返回一个NULL指针。例如:

char string[20]="Hello there";
char *check;

check=strpbrk(string , "aeiou");

check所指向的位置是string+1,因为这个位置是第二个参数中字符第一次出现的的位置,和上一个一样,也是区分大小写。

7.字符分类函数

以下函数如果参数满足条件就返回真(包含在ctype.h)

1.isspace       --------空白字符:空格,换页,换行,回车等等
2.isdigit       --------十进制数0-9
3.islower       --------小写字母a~z
4.isupper       --------大写字母A~Z
5.isalpha       --------字母a~z或者字母A~Z
6.ispunct       --------标点符号

例如:

if(ch>'A' && ch<'Z')  这条语句只能在ASCII机器上运行

可用以下语句替换则无论那个机器都能使用
if(isupper(ch))

8.关于结构体

声明结构体时可使用的一种良好技巧是用typedef创建一种新的类型,例如:

typedef struct{
    int a;
    char b;
    float c;
}Simple;
...
Simple x;
Simple y[20],*z;
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Objective-C学习总结——函数与变.. 下一篇为什么要学习C语言 C语言优势分析

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目