字符串
#include <stdio.h>
#include <malloc.h>
#include <stdbool.h>
#define MaxSize 100
typedef struct{
char cha[MaxSize+2];
int length;
}Str_static;
typedef struct{
char *ch;
int length;
} Str_dynamic;
bool strAssign(Str_dynamic *str, char *ch){
if(str != NULL){
free(str->ch);
str->ch=NULL;
}
int len=-1;
while(ch[++len] != '\0');
if(len==0){
str->ch=NULL;
str->length=0;
return 0;
}
str->ch=(char *)malloc(sizeof (char) *(len+2));
if(str->ch==NULL){
printf("申请空间失败");
return false;
}
for (int i = 1; i <=len+1; ++i) {
str->ch[i]=ch[i-1];
}
str->length=len;
return true;
}
int getStrLength(Str_dynamic str){
return str.length;
}
int strCompare(Str_dynamic s1,Str_dynamic s2){
for (int i = 1; i <=s1.length && i<=s2.length; ++i) {
if(s1.ch[i]!=s2.ch[i]){
return s1.ch[i]-s2.ch[i];
}
}
return s1.length-s2.length;
}
bool strConcat(Str_dynamic Str,Str_dynamic str1,Str_dynamic str2){
if(Str.ch != NULL){
free(Str.ch);
Str.ch=NULL;
}
Str.ch=(char *)malloc(sizeof (char) *(str1.length+str2.length+2));
if(Str.ch==NULL){
return false;
}
int i =1;
while(i<=str1.length){
Str.ch[i]=str1.ch[i];
i++;
}
while(i<=str1.length+str2.length){
Str.ch[i]=str2.ch[i-str1.length];
i++;
}
Str.length=str1.length+str2.length;
return true;
}
bool getSubStr(Str_dynamic *Str_out,Str_dynamic str_in,int pos,int len){
if(pos<1 || pos >str_in.length || len<0 || len>str_in.length-pos+1){
return false;
}
if(Str_out->ch != NULL){
free(Str_out->ch);
Str_out->ch=NULL;
}
if(len ==0){
Str_out->ch=NULL;
Str_out->length=0;
return true;
}
Str_out->ch=(char *)malloc(sizeof (char) *(len+2));
if(Str_out->ch==NULL){
return false;
}
int i=pos, j=1;
while(i<=pos+len){
Str_out->ch[j]=str_in.ch[i];
i++;
j++;
}
Str_out->ch[j]=0;
Str_out->length=len;
return true;
}
bool clearStr(Str_dynamic *str){
if(str->ch != NULL){
free(str->ch);
str->ch=NULL;
}
str->length=0;
return true;
}
int main() {
Str_dynamic s;
s.ch=(char *)malloc(sizeof (char) *(2));
s.length=2;
printf("Hello, World!\n");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)