当前位置: 首页> 科技> 互联网 > 网页打不开显示404要怎么处理_服装网站建设规定_电话营销系统_国内外搜索引擎大全

网页打不开显示404要怎么处理_服装网站建设规定_电话营销系统_国内外搜索引擎大全

时间:2025/9/10 22:14:25来源:https://blog.csdn.net/qq_50093188/article/details/145902937 浏览次数:0次
网页打不开显示404要怎么处理_服装网站建设规定_电话营销系统_国内外搜索引擎大全

目录

前言

一、组件化概念

开发组件的三个环节

二、开发案例

案例

string_pro.h文件

string_pro.cpp文件

TestString_pro.cpp测试文件

 三、开发内容

组件功能

具体实现

具体测试

总结


前言

        在C语言中创建组件化项目是一种很有意义的做法。组件化项目的主要目的是将代码模块化,使其更易于管理、维护和复用。通过将代码拆分为多个独立的组件,可以提高代码的灵活性和可维护性。


一、组件化概念

开发组件的三个环节

二、开发案例

案例

string_pro.h文件

/*
功能:判断一个字符串中是否包含另一个字符串
参数:str:目标字符长串substr:被查找的短字符串
返回:0 不包含 1包含
简例:int a = contains("Hello ,how are you","are");
返回 1;
*/ 
int contains(const char* str,const char *substr) ;

string_pro.cpp文件

#include"string_pro.h"int contains(const char* str, const char* substr)
{return strstr(str,substr)!=NULL;
}

TestString_pro.cpp测试文件

#include <stdio.h>
#include <iostream>
#include"string_pro.h"
using namespace std;
int main ()
{int a = contains("Hello,how are you","are");printf("%d\n",a);return 0;
}

 三、开发内容

组件功能

#pragma once
#include <string.h>
/*
功能:判断一个字符串中是否包含另一个字符串
参数:str:目标字符长串substr:被查找的短字符串
返回:0 不包含 1包含
简例:int a = contains("Hello ,how are you","are");
返回 1;
*/ 
int contains(const char* str,const char *substr) ;/*
功能:判断一个字符串的开头是否与另一个字符串相同
参数:str 目标字符串 substr被比较字符串
返回:0 否 1 是
简例:int a =startsWith("Hello ,how are you","Hello");
返回值:1
*/
int startsWith(const char* str,const char *substr);/*
功能:判断一个字符串的结尾是否与另一个字符串相同
参数:str 目标字符串 substr被比较字符串
返回:0 否 1 是
简例:int a =endsWith("Hello ,how are you","are");
返回值:1
*/
int endsWith(const char* str,const char *substr);/*
功能:从一个字符串前面寻找另一个字符串首次出现的下标
参数:str目标字符串,substr寻找字符串
返回:下标位置
简例:int a= strIndexOf("how are you","are");
返回值:4
*/
int strIndexOf(const char* str,const char* substr) ;/*
功能:在一个字符串str前面开始寻找字符c首次出现的下标
参数:str目标字符串,c 被寻找的字符
返回:下标位置
简例:int a= charIndexOf("how are you",'w');
返回值:2
*/
int charIndexOf(const char* str,char c) ;/*
功能:从一个字符串尾部开始寻找另一个字符串首次出现的下标
参数:str目标字符串,substr寻找字符串
返回:下标位置
简例:int a= strLastIndexOf("how do you do","do");
返回值:11
*/
int strLastIndexOf(const char* str,const char* substr) ;/*
功能:在一个字符串str尾部开始寻找字符c首次出现的下标
参数:str目标字符串,c 被寻找的字符
返回:下标位置
简例:int a= charLastIndexOf("how are you",'o');
返回值:9
*/
int charLastIndexOf(const char* str,char c) ;/*
功能:判断一个字符串是否空串
参数:str被检测的字符串
返回:0 不是 1 是
简例:int a = isEmpty("");
返回值 1 
*/
int isEmpty(const char* str) ;/*
功能:去掉字符串中的所有空格
参数:str 需要去掉空格的字符串
返回:处理后的str
简例:
char s[] = "  how are you  ";
trimAll(s)
返回值:howareyou
*/
char* trimAll(char* str) ;/*
功能:只去掉字符串左侧的所有空格
参数:str: 需要去掉左侧空格的字符串
返回:处理后的str
简例:
char s[] = "  how are you  ";
leftTrim(s)
返回值:how are you  |
*/
char* leftTrim(char* str) ;/*
功能:只去掉字符串右侧的所有空格
参数:str: 需要去掉右侧空格的字符串
返回:处理后的str
简例:
char s[] = "  how are you  ";
rightTrim(s)
返回值:  how are you|
*/
char* rightTrim(char* str) ;/*
功能:把字符串的字母全部转换成大写 
参数:str被变大写的字符串
返回:处理后的str
简例:
char s[] = "how are you";
toUpperCase(s);
返回值: HOW ARE YOU
*/
char* toUpperCase(char* str ) ;/*
功能:把字符串的字母全部转换成小写 
参数:str被变小写的字符串
返回:处理后的str
简例:
char s[] = "IEEE1394";
toUpperCase(s);
返回值: ieee1394
*/
char* toLowerCase(char* str ) ;/*
功能:忽略大小写字母,比较两个字符串的大小
参数:str1 str2 两个比较的字符串
返回:1 大于关系 0 等于关系 -1小于关系
简例:int a=strcmpIgnorecase("Are","are");
返回值:0
*/
int strcmpIgnorecase(const char* str1,const char *str2) ;/*
功能:对一个字符串进行翻转
参数:str被翻转的字符串
返回:翻转处理后的str
简例:char s[] ="12345";
返回值:54321
*/
char* reserveStr(char *str);/*
功能:把一个s字符串重复连接n次后存放到d字符串
参数:d最终结果字符串,s被重复的字符串 n 重复的次数
返回:d最终结果字符串
简例:char a[50];
repeat(a,"sorry!",3);
返回值:sorry!sorry!sorry!
*/
char* repeat(char* d,const char *s ,int n) ;/*
功能:把一个长串中的一段字符串复制到另一个字符串。
参数:s 长串 from从 to到(但不包括) d存放位置
返回:d字符串的结果
简例:char d[20];
substr("hello world",2,5,d);
返回值:llo
*/
char* substr(const char* s,int from ,int to,char * d) ;/*
功能:把sub字符串插入到str的指定下标位置
参数:str目标字符串 sub被插入的子串 index 插入点下标。
返回:处理后的str
简例:
char s[50]="how you";
insert(s,"are ",3);
返回值:how are you
*/
char* insert(char* str,const char *sub,int index) ;/*
功能:把字符串中指定下标的字符删除掉
参数:str目标字符串,index 被删除下标
返回:处理后的str
简例:char s[]="how you";deleteCharAt(s,1);
返回值:hw you	
*/
char* deleteCharAt(char* str,int index) ;/*
功能:把str字符串中的一段字符删除掉
参数:str被删除的字符串 from删除开始点 to 结束点(但不包括)
返回:处理后的str
简例:
char s[]="how you";
deleteSubstr(s,0,4);
返回值:you
*/
char* deleteSubstr(char* str,int from ,int to) ;/*
功能:把字符串str的一小段字符替换成另一个字符串sub
参数:str目标字符串 from起始点,to结束点(但不包括) sub替换的内容
返回:处理后的str
简例:
char s[50]="how is you";
replace(s,4,6,"are");
返回值:how are you
*/
char* replace(char* str,int from ,int to,const char * sub); /*
功能:把字符串str中的某些部分替换成另外的字符串
参数:str目标字符串 oldsub原来的内容 newsub 新的内容
返回:处理后的str
简例:
char s[50]="how did you did";
replaceAll(s,"did","do");
返回值:how do you do
*/
char* replaceAll(char* str,const char *oldsub,const char* newsub) ;

具体实现

#include"string_pro.h"
#include<stdlib.h>
int contains(const char* str, const char* substr)
{return strstr(str,substr)!=NULL;
}int startsWith(const char* str, const char* substr)
{return strstr(str,substr)==str;
}int endsWith(const char* str, const char* substr)
{//方法一:/*const char* p = strstr(str, substr);if (p!=NULL){return strlen(p)==strlen(substr);}*///方法二:const char* p = str + (strlen(str) - strlen(substr));return strcmp(p, substr) == 0;}int strIndexOf(const char* str, const char* substr)
{const char* p=strstr(str, substr);return p == NULL ? -1 : p - str;
}int charIndexOf(const char* str, char c)
{char sub[2] = {c,'\0'};return strIndexOf(str,sub);
}int strLastIndexOf(const char* str, const char* substr)
{const char* p = str;const char* q = NULL;do{p = strstr(p,substr);if (p!=NULL){q = p;p++;}} while (p!=NULL);return q!=NULL?q - str : -1;
}int charLastIndexOf(const char* str, char c)
{char sub[2] = {c,'\0'};const char* p = str;const char* q = NULL;do{p = strstr(p, sub);if (p != NULL){q = p;p++;}} while (p != NULL);return q != NULL ? q - str : -1;
}int isEmpty(const char* str)
{return strlen(str)=='\0';
}char* trimAll(char* str)
{char* p=str;char* q = str;while (*p!='\0'){if (*p!=' '){*q = *p;q++;}p++;}*q = '\0';return str;
}char* leftTrim(char* str)
{char* p=str;while (*p==' '){p++;}strcpy(str,p);return str;
}char* rightTrim(char* str)
{char* p = str+(strlen(str) - 1);while (*p==' '){p--;}*(p + 1) = '\0';return str;
}char* toUpperCase(char* str)
{for (int i = 0; str[i] != '\0'; i++){if (str[i]>='a'&&str[i]<='z'){str[i] -= 32;}}return str;
}char* toLowerCase(char* str)
{for (char* p=str; *p != '\0'; p++){if (*p >= 'A' && *p <= 'Z'){*p += 32;}}return str;
}int strcmpIgnorecase(const char* str1, const char* str2)
{char* p1 = (char*)malloc(strlen(str1)+1);strcpy(p1, str1);char* p2 = (char*)malloc(strlen(str2) + 1);strcpy(p2, str2);toLowerCase(p1);toLowerCase(p2);int r = strcmp(p1,p2);free(p1);p1 = NULL;free(p2);p2 = NULL;return r;//int a = stricmp(str1, str2);//return a==0?0:a>0?1:-1;}char* reserveStr(char* str)
{char* p = str;char* q = str + (strlen(str)-1);while (p<=q){char ch = *p;*p = *q;*q = ch;p++;q--;}return str;
}char* repeat(char* d, const char* s, int n)
{d[0] = '\0';for (int i = 0; i < n; i++){strcat(d,s);}return d;
}char* substr(const char* s, int from, int to, char* d)
{memcpy(d,s+from,to-from);d[to-from] = '\0';return d;
}char* insert(char* str, const char* sub, int index)
{char* p = str + index;char* q = (char *)malloc(strlen(p) + 1);strcpy(q,p);*p = '\0';strcat(str, sub);strcat(str, q);free(q);return str;
}char* deleteCharAt(char* str, int index)
{strcpy(str+index,str+index+1);return str;
}char* deleteSubstr(char* str, int from, int to)
{strcpy(str+from,str+to);return str;
}char* replace(char* str, int from, int to, const char* sub)
{deleteSubstr(str,from,to);insert(str, sub, from);return str;
}char* replaceAll(char* str, const char* oldsub, const char* newsub)
{char* p ;int oldLength = strlen(oldsub);do {p = strstr(str, oldsub);if (p!=NULL){int from =p-str ;int to = from+oldLength;replace(str, from, to, newsub);}} while (p!=NULL);return str;
}

具体测试

#include <stdio.h>
#include <iostream>
#include"string_pro.h"
using namespace std;
int main ()
{//int a = contains("Hello,how are you","are");//int a = startsWith("Hello,how are you", "Hello");//int a = endsWith("Hello,how are you", "yo");/*int a = strIndexOf("Hello,how are you", "are");*///int a = charIndexOf("Hello,how are you", 'o');//int a = strLastIndexOf("how are you", "are");//int a = charLastIndexOf("how are you", 'o');//int a = isEmpty("");//printf("%d\n",a);//char s[] = "  how are you  ";//printf("%s", trimAll(s));//printf("%s", leftTrim(s));//printf("%s|", rightTrim(s));//printf("%s", toUpperCase(s));//char s[] = "IEEE1394";//printf("%s", toLowerCase(s));/*int a = strcmpIgnorecase("Are", "are");printf("%d\n",a);*//*char s[] = "12345";printf("%s", reserveStr(s));*///char a[50];//printf("%s",repeat(a, "sorry!", 3));/*char d[20];printf("%s",substr("hello world", 2, 5, d));*//*char s[50] = "how you";printf("%s",insert(s, "are ", 4));*///char s[] = "how you";//printf("%s", deleteCharAt(s, 1));//printf("%s", deleteSubstr(s, 0, 4));/*char s[50] = "how is you";printf("%s",replace(s, 4, 6, "are"));*/char s[50] = "how did you did";printf("%s", replaceAll(s, "did", "do"));return 0;
}

总结

        C语言是一种功能强大的编程语言,但在项目开发过程中,如果没有合理的组件化设计,可能会导致代码结构混乱、维护困难等问题。因此,在进行C语言项目开发时,我们可以考虑采用组件化的设计思路,以提高代码的可维护性、可复用性和可扩展性。

以下是关于C语言组件化项目的一些小结:

  1. 模块化设计:将代码按照功能或业务逻辑划分为多个模块,每个模块封装一个特定的功能,模块之间通过接口进行通信。这样可以降低模块之间的耦合性,提高代码的重用性。

  2. 接口设计:定义清晰简洁的接口,以规范模块之间的数据传递和函数调用。接口设计应该考虑到模块的功能需求,避免接口过于复杂或冗余。

  3. 组件封装:将相关功能封装成独立的组件,每个组件负责特定的功能,提供清晰的接口给其他组件使用。组件化可以提高代码的可重用性和可维护性。

  4. 单一职责原则:每个组件或模块应该只负责一项特定的功能,避免一个组件包含过多的功能,提高代码的清晰度和可读性。

  5. 构建工具:使用适合的构建工具来管理项目中的代码、依赖和构建过程,例如Makefile、CMake等。构建工具可以帮助组织代码结构、管理依赖关系,提高项目的可维护性。

  6. 单元测试:为每个组件编写单元测试,确保组件的功能正确性和稳定性。单元测试可以帮助及早发现和解决代码中的bug,提高项目的质量和稳定性。

        总的来说,C语言的组件化设计可以帮助我们更好地管理项目代码,提高代码的复用和可维护性,从而更高效地开发和维护项目。希望以上小结对您有所帮助。

关键字:网页打不开显示404要怎么处理_服装网站建设规定_电话营销系统_国内外搜索引擎大全

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: