Bootstrap

7月12号笔记

作业一:实现strlen功能

#include <stdio.h>
int main(int argc, const char *argv[])
{
	printf("请输入一个字符串:\n");
	char data[100]="";
	gets(data);
	printf("字符串的长度是:%d\n",strlen(data));
	return 0;
}

int strlen(const char* data){
	int length=0;
	while(*data){
		length++;
		data++;
	}
	return length;
}

作业二:实现strcpy功能

#include <stdio.h>
int main(int argc, const char *argv[])
{
	printf("请输入一个字符串:\n");
	char src[100]="";
	char dest[100]="";
	gets(src);
	strcpy(dest,src);
	puts(dest);
	return 0;
}

char *strcpy(char *dest,const char* src){
	char *p=dest;
	while(*src){
		*dest=*src;
		src++;
		dest++;
	}
	*dest='\0';
	return p;
}

作业三:实现strcat功能;

#include <stdio.h>
int main(int argc, const char *argv[])
{
	printf("请输入一个字符串:\n");
	char src[100]="";
	char dest[100]="";
	gets(src);
	printf("请输入第二个字符串:\n");
	gets(dest);
	strcat(dest,src);
	puts(dest);
	return 0;
}

char *strcpy(char *dest,const char* src){
	char *p=dest;
	while(*dest){
		dest++;
	}
	while(*src){
		*dest=*src;
		src++;
		dest++;
	}
	*dest='\0';
	return p;
}

作业四:实现strcmp功能;

#include <stdio.h>
int main(int argc, const char *argv[])
{
	printf("请输入一个字符串:\n");
	char src[100]="";
	char dest[100]="";
	gets(src);
	printf("请输入第二个字符串:\n");
	gets(dest);
	if(strcmp(src,dest)>0){
		printf("第一个字符串大\n");
	}else if(strcmp(src,dest)<0){
		printf("第二个字符串大\n");
	}else{
		printf("两个字符串相等\n");
	}
	return 0;
}

int  *strcmp(const char *s1,const char* s2){
	while(*s1){
		if(*s1>*s2||*s1<*s2){
			return *s1-*s2;
		}
		s1++;
		s2++;
	}
	if(*s1==*s2){
		return 0;
	}
	
}

作业五:自定义函数(my_strstr)实现求src字符串中是否包含子串dest字符串

#include <stdio.h>
int main(int argc, const char *argv[])
{
	printf("请输入一个字符串:\n");
	char src[100]="";
	char dest[100]="";
	gets(src);
	printf("请输入第二个字符串:\n");
	gets(dest);
	if(strstr(src,dest)==1){
		printf("包含\n");
	}else{
		printf("不包含\n");
	}
	return 0;
}

int  strstr(const char *s1,const char* s2){
	char* p=s1; #定义两个指针变量代替 s1和s2
	char* q=s2; 
	while(*s1){ #如果s1走到最后就结束
 		if(*s1==*q){ #判断双方第一个字母是否相同
			while(*q){   #判断q是否走到最后
				if(*p!=*q){  #有一个字母不相同  直接结束循环
					break;
				}
				p++;  #相同双方就继续往后走
				q++;
			}
			if(*q=='\0'){   #判断上面的比较q是否走到最后  如果走到最后  则包含
				return 1;
			}
		}
		s1++;  #到这就是s1当前字母后面不相同  ++  走到下一个字符开始比较
		p=s1;  #p和q也要回归到开头
		q=s2;
	}
	return 0;
	
}

;