[데이터 구조] 4.1 문자열 의 기본 조작 (코드 추가 실현)
할당
연결
비교
비 워 주세요.
꼬치
구체 적 인 코드 는 다음 과 같다.
#include
#include
#include
#include
typedef struct String{
char * ch;
int length;
}Str;
void StrInit(Str &str);// (str1,str2,str3), !
int StrAssign(Str &str ,char * ch) ;//
int GetStrLength(Str str);//
int StrCompare(Str s1,Str s2);//
int Concat(Str str1, Str str2, Str &str);//
int GetSubString(Str str,int pos, int len, Str &substr);//
int ClearString(Str &str); //
int main(void)
{
Str str1, str2, str3,substr;
StrInit(str1);
StrInit(str2);
StrInit(str3);
StrInit(substr);
char ch1[] = "I love China!";
char ch2[] = "I love U!";
char ch3[] = "Data structure!";
StrAssign(str1, ch1);
StrAssign(str2, ch2);
StrAssign(str3, ch3);
Concat(str1,str2,str3) ;
GetSubString(str3,3,7,substr);
printf("%s
",str1.ch);
printf("%s
",str2.ch);
printf("%s
",str3.ch);
printf("%s
",substr.ch);
return 0;
}
void StrInit(Str &str)
{
str.length = 0;
str.ch = NULL;
}
int StrAssign( Str & str ,char * ch)
{ //
if(str.ch) // str.ch ,
{
free(str.ch);
str.ch = NULL;
}
int len = 0;
char * c = ch;
while (*c)
{ //
++len;
++c;
}
if(len == 0) //
{
str.ch = NULL;
str.length = 0;
return 1;
}
else
{
str.ch = (char *)malloc(sizeof(char)*(len + 1));
if(str.ch ==NULL)//
return 0;
else
{// 1
c = ch;
for(int i = 0; i <= len ; ++i,++c)
str.ch[i] = *c;
str.length = len;
return 1;
}
// {// 2
// i = 0;
// c = ch;
// while(c*)
// {
// str.ch[i] = c*;
// ++c;
// ++i;
// }
// str.[++i] = '\0';
// str.length = i;
// }
}
}
int GetStrLength(Str str)
{
return str.length;
}
int StrCompare(Str str1,Str str2)
{ //
for(int i = 0; i if(str1.ch[i] != str2.ch[i])
return str1.ch[i] - str2.ch[i];
return str1.length - str2.length;
}
int Concat(Str str1, Str str2, Str &str)
{ //
if(str.ch)
{
free(str.ch);
str.ch = NULL;
}
str.ch = (char *)malloc(sizeof(char)*(str1.length + str2.length + 1));
if(!str.ch) //
return 0;
int i = 0,j = 0;
while (i str.ch[i] = str1.ch[i];
++i;
}
while(j < str2.length)
{
str.ch[i + j] = str2.ch[j];
++j;
}
str.ch[i+j] = '\0';
str.length = str1.length + str2.length;
return 1;
}
int GetSubString(Str str,int pos, int len, Str &substr)
{ // : str pos , len substr
if(pos < 0 || pos >=str.length || len < 0 || len > str.length - pos)
return 0;
if(substr.ch)
{
free(substr.ch);
substr.ch == NULL;
}
if(len == 0)
{
substr.ch = NULL;
substr.length = 0;
return 1;
}
else
{
substr.ch = (char*)malloc(sizeof(char) * (len + 1));
int i = pos, j = 0;
while(i < pos + len)
{
substr.ch[j] = str.ch[i];
++i;
++j;
}
substr.ch[j] = '\0';
substr.length = len;
return 1;
}
}
int ClearString(Str & str)
{ //
if(str.ch)
{
free(str.ch);
str.ch == NULL;
}
str.length = 0;
return 1;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
pandas 읽기 및 쓰기 Excelpandas 읽기와 쓰기 Excel은 중복된 데이터 가공 작업을 pandas에 맡기고 수동 노동을 절약하며 사용하기도 편리하지만 출력의 형식은 그다지 아름답지 않다.본고는 read_excel()과to_excel()의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.