데이터 구조 문자열 의 조작 사례 상세 설명
문자열 은 특수 한 선형 표 로 모든 노드 가 하나의 문자 이기 때문에 문자열 도 문자열 이 라 고 부른다.
문자열 에 대한 작업 은 주로 문자열 길이, 문자열 복사, 문자열 연결, 문자열 삽입, 문자열 삭제, 문자열 위치 확인 등 이 있 습 니 다.꼬치 의 조작 도 C 언어 필기시험 에서 자주 보 는 일부분 이다.
아래 의 코드 는 문자열 의 주요 조작 을 실현 하 였 다.
#include
#include
#define MAXSIZE 20
char *String_Create(); //
int String_Length(char *s); //
void String_Show(char *s); //
char *String_Copy(char *d, char *s); //
char *String_Connect(char *d, char *s); //
char *String_SubStr(char *d, char *s, int pos, int len); //
int String_Compare(char *d, char *s); //
char *String_Insert(char *d, char *s, int pos); //
char *String_Delete(char *d, int pos, int len); //
int String_Index(char *d, char *s, int pos); //
int main(void)
{
int choice;
char *str, *c;
int ans, pos, len;
c = (char*)malloc(sizeof(MAXSIZE));
printf(" ( 10 ):
");
str = String_Create();
while(1)
{
printf("***************************
");
printf(" :
");
printf("1.
");
printf("2.
");
printf("3.
");
printf("4.
");
printf("5.
");
printf("6.
");
printf("7.
");
printf("8.
");
printf("9.
");
printf("10.
");
printf(" :
");
scanf("%d", &choice);
getchar();
switch(choice)
{
case 1:
ans = String_Length(str);
printf(" %d
", ans);
break;
case 2:
c = String_Copy(c, str);
printf(" :
");
String_Show(c);
break;
case 3:
printf(" ( 10 )
");
gets(c);
c = String_Connect(c, str);
printf("
");
String_Show(c);
break;
case 4:
printf("
");
scanf("%d %d", &pos, &len);
c = String_SubStr(c, str, pos, len);
if(c == NULL)
printf(" !
");
else
{
printf(" :
");
String_Show(c);
}
break;
case 5:
printf(" :
");
gets(c);
ans = String_Compare(c, str);
if(ans>0)
printf("
");
else if(ans<0)
printf("
");
else
printf("
");
break;
case 6:
printf("
");
gets(c);
printf(" :
");
scanf("%d", &pos);
str = String_Insert(str, c, pos);
printf(" :
");
String_Show(str);
break;
case 7:
printf("
");
scanf("%d %d", &pos, &len);
str = String_Delete(str, pos, len);
break;
case 8:
printf(" :
");
gets(c);
ans = String_Index(str, c, 1);
printf(" %d
", ans);
break;
case 9:
String_Show(str);
break;
case 10:
return 0;
break;
default:
printf(" !
");
break;
}
}
return 1;
}
//
char *String_Create()
{
char *s, ch;
int i = 0;
s = (char*)malloc(MAXSIZE);
ch = getchar();
while(ch != '#')
{
*(s+i) = ch;
i++;
ch = getchar();
}
if(i > MAXSIZE/2)
printf(" 10!
");
else
*(s+i) = '\0';
return s;
}
//
int String_Length(char *s)
{
int l=0;
while(*s != '\0')
{
l++;
s++;
}
return l;
}
//
char *String_Copy(char *d, char *s)
{
char *c;
c = d;
while((*d++=*s++)!='\0');
return c;
}
//
char *String_Connect(char *d, char *s)
{
char *c;
int l, i=0;;
c = d;
l = String_Length(d);
d = d + l;
while((*d++ = *s++) != '\0'); //
return c;
}
//
char *String_SubStr(char *d, char *s, int pos, int len)
{
char *c1, *c2=NULL;
int l, i;
c2 = (char*)malloc(MAXSIZE/2);
c1 = s;
d = c2;
l = String_Length(s);
if(pos>l || pos<1) //
return NULL;
if(len<0) //
return NULL;
c1 = c1 + pos - 1;
for(i=1; i<=len && *c1 != '\0'; i++) //
{
*c2++ = *c1++;
}
*c2 = '\0'; //
return d;
}
//
int String_Compare(char *d, char *s)
{
char *c1, *c2;
c1 = d;
c2 = s;
while(*c1 != '\0' || *c2 != '\0')
{
if(*c1 > *c2)
return 1;
else if(*c1 < *c2)
return -1;
c1++;
c2++;
}
if(*c1 == '\0' && *c2 == '\0') // ,
return 0;
else if(*c2 == '\0') // ,
return 1;
else
return -1;
}
//
char *String_Insert(char *d, char *s, int pos)
{
int i, ld,ls;
char *c1, *c2;
c1 = d;
c2 = s;
ld = String_Length(d);
ls = String_Length(s);
for(i=ld; i>=pos-1; i--) // ,
*(c1 + ls + i) = *(c1 + i);
for(i=pos; i<=pos+ls-1; i++) //
*(c1 + i - 1) = *c2++;
*(c1 + ld + ls) = '\0'; //
return d;
}
//
char *String_Delete(char *d, int pos, int len)
{
int i, l;
l = String_Length(d);
if(pos + len > l) // ,
*(d + pos -1) = '\0';
else
{
for(i=pos+len-1; i<=l; i++)
*(d + i - len) = *(d + i);
*(d + l - len) = '\0'; //
}
return d;
}
//
int String_Index(char *d, char *s, int pos)
{
int i = pos - 1, j = 0, ld, ls, b=0;
ld = String_Length(d);
ls = String_Length(s);
while(i < ld && j
위의 코드 는 바로 문자열 과 관련 된 조작 이다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다. 본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.