C语言第三弹

​ 有几天没更新了,这几天也为忙于课程设计,所以把安排学习C语言的学习时间用来做课程设计了,这个学期的课程设计是一个用python语言实现的课程设计,由于我大一大二真的时没怎么读书,大三的时候学了一点点的大数据分析,也算是和python有一点点的关系吧,但是呢学的也不是很精,咱就是说那时候就是天天的在想着怎么搞钱,到处打工,到了考研的时候才回来学习C语言,的通过考研这一段时间的学习呢,我发现每一个语言的都有其特点和优势,C语言呢,都说C语言的各种计算机语言的妈妈,其他的语言都是派生于它,确实,没错,但是呢C语言虽然伟大但是呢学习起来难度较大,而且C语言比较注重与格式的书写,相对严谨;相对于Java来说两种语言各有各的优势以及特点,在社会上所占的比重也不相上下。python的话就是一个相对来说,个人感觉比较简单一点的语言,我个人也是对python比较感兴趣,并且以后我也希望自己能够从事与大数据分析这一门的学习。

好啦回归正题。今天需要总结的是关于字符串处理的一些函数

字符串处理函数

(1)strcmp函数

表现方式:if(strcmp(str1,str2)>0) printf("yes"); 有三种结果: (1)如果字符串1与字符串2相同,则函数值为0 (2)如果字符串1》字符串2,则返回值为正数 (3)第三种就可想而知了如果字符串1《字符串2,就是一个负数

但是呢题目应该会这么问我们,用其他的方式,说用其他的方式;来实现该函数的功能

那么下面呢有两种方法:
    (1)第一种数组的方法:
    #include<stdio.h>
    #include<string.h>

    int mycmp(const char* s1,const char* s2){
        int index = 0;
        while(1){
            if(s1[index]!=s2[index]){
                break;
            }else if(s1[index]==''){
                break;
            }
            index++;
        }
        return s1[index]-s2[index];
    }
    int main(){
        char s1[]="agc";
        char s2[]="abc";
        printf("%d
",mycmp(s1,s2));
        printf("%d
",strcmp(s1,s2));
        return 0;
 

​ 这种方法呢就是用一个index索引来控制函数的进程,一旦当两个数列的值不相等的时候呢就可以跳出进行一个相减去的操作,那么在这个函数我也添加了这个函数的本身功能,在输出结果的时候会有所 不同但其实是一样的,可以去思考一下原因

(2)第二种方式呢就是说是一个用指针来解决的
    #include<stdio.h>
    #include<string.h>

        while(*s1 == *s2&&*s1 !=''){
            s1++;
            s2++;
        }
        return *s1 - *s2;
    }
    int main(){
        char s1[]="agc";
        char s2[]="abc";
        printf("%d
",mycmp(s1,s2));
        printf("%d
",strcmp(s1,s2));
        return 0;
    }

​ 第二种方法和第一种差不多只不过是换了一个形式而已,也为s1和s2表示的是变量,是地址就可以自加,思路和第一种差不多

(2)strcpy函数

​ strcpy函数表示的是字符串复制函数,将一个字符串复制到另外一个字符串

实现方式如下:

​ char str1[10],str2[]='China';

​ strcpy(str1,str2)将str2的值给到str1,但是在这个过程中要注意数组容量

#include<stdio.h>
#include<string.h>
char* mtcpy(char* dst,const char* src){
	int idx = 0;
	while(src[idx]){
		dst[idx]=src[idx];
		idx++;
	}
	dst[idx]='';
	
	return dst;
}

int main(){
	char s1[80];
	char s2[]="abc";
	mtcpy(s1,s2);
	printf("%c",s1);
	return 0;
}

仔细观摩函数的变化,用到的也是一个idx的作为下标,而判断条件则作为src[idx],因为字符串数组的最后一个元素是''

(3)strlen函数

​ 该函数的是计算字符串的长度,但是计算的是字符串的有效长度,不包括''

#include<stdio.h>
#include<string.h>
int mylen(const char*s){
	int cnt = 0;
	int index = 0;
	while(s[index]!=''){
		index++;
		cnt++;
	}
	return cnt;
}
int main(){
	char line[] = "hello";
	printf("strlen=%lu
",mylen(line));
	printf("strlen=%lu
",strlen(line));
	printf("sizeof=%lu
",sizeof(line));
}

sizeof函数也是计算字符串长度的,但是包括了最后一位''字符

原文地址:https://www.cnblogs.com/ht0529/p/15435464.html