c语言串的基本运算
1、求串长
int strlen(char *s); //求串s的长度
【例】printf("%d",strlen(s1)); //输出s1的串长12
2、串复制
char *strcpy(char *to,*from);//将from串复制到to串中,并返回to开始处指针
【例】strcpy(s3,s1); //s3="dir/bin/appl",s1串不变
3、联接
char *strcat(char *to,char *from);//将from串复制到to串的末尾,
//并返回to串开始处的指针
【例】strcat(s3,"/"); //s3="dir/bin/appl/"
strcat(s3,s2); //s3="dir/bin/appl/file.asm"
4、串比较
int strcmp(char *s1,char *s2);//比较s1和s2的大小,
//当s1s2和s1=s2时,分别返回小于0、大于0和等于0的值
【例】result=strcmp("baker","baker"); //result>0
result=strcmp("12","12"); //result=0
result=strcmp("joe","joseph") //result<0
5、字符定位
char *strchr(char *s,char c);//找c在字符串s中第一次出现的位置,
//若找到,则返回该位置,否则返回null
【例】p=strchr(s2,'.'); //p指向"file"之后的位置
if(p) strcpy(p,".cpp"); //s2="file.cpp"
注意:
①上述操作是最基本的,其中后 4个操作还有变种形式:strncpy,strncath和strnchr。
②其它的串操作见c的。在不同的高级语言中,对串运算的种类及符号都不尽相同
③其余的串操作一般可由这些基本操作组合而成
【例】求子串的操作可如下实现:
void substr(char *sub,char *s,int pos,int len){
//s和sub是字符数组,用sub返回串s的第pos个字符起长度为len的子串
//其中0<=pos<=strlen(s)-1,且数组sub至少可容纳len+1个字符。
if (pos<0||pos>strlen(s)-1||len<0)
error("parameter error!");
strncpy(sub,&s[pos],len); //从s[pos]起复制至多len个字符到sub
c++异常处理机制示例及讲解
c++const成员函数
c语言实例:素数幻方
1.char *:
char *psz = null;
psz = new char[10]; //当然,以上的直接写成char *psz = new char[10];也是一样
memset( psz, 0, 10 );
strcpy( psz, “joise” );
2.cstring:
cstring cstr;
cstr = psz; 字符指针直接赋值
3.string:
string str;
str = psz; 字符指针直接赋值
str = cstr; cstring变量直接赋值
delete []psz;
加运算
string与cstring差不多,可以直接与char*进行加法,但不可以相互使用+运算符
char*没有+运算,只能使用strcat把两个指针连在一起;
strcat( psz, cstr );//合法
strcat( psz, str );//非法,由此可见,cstring可自动转换为const char*,而string不行
[]运算
cstring最好,当越界时会抛出断言异常;
string与char*下标越界结果未定义;