C 언어 문자열 함수 소스 상세 설명
char *strcpy(char *strDestination, const char *strSource);
NULL 끝 문자를 포함하는 원본 문자열strSource를 대상 문자열strDestination에서 지정한 위치로 복사합니다.원본 직렬과 목표 직렬이 중첩된 상황을 처리할 수 없습니다.
함수가strDestination 값을 반환합니다.
소스:
char *strcpys(char *strDes, const char *strSrc) {
assert((strDes != NULL) && (strSrc != NULL)); //assert , assert NULL
char *address = strDes;
while ((*strDes ++ = *strSrc ++) != '\0')
NULL;
return address;
}
관건: assert의 유효성 판단;NULL 끝 문자
사실, 바늘 변수address를 사용하지 않고strDes로 되돌아오기만 하면 됩니다.
테스트:
#include<assert.h>
#include<iostream.h>
void main()
{
char a[20]="aaaaaaaaaaaaaaaaaa";
char c[]="i am teacher!";
// cout<<a<<"
"<<endl;
//strcpy(a,c);
char *addr=strcpys(a,c);
cout<<addr<<endl;
//printf("
%s",a);
}
결과 출력:
i am teacher!
2. 문자열에서 문자strdel 삭제
이것은 내가 면접한 비행기 문제인데 창고 안의 것이 아니기 때문에 스스로 원형을 썼다.
char*strDel(char*str, const char chTodel) - str의 모든 chTodel 문자를 삭제합니다.
소스:
// : pRefStr2 str, chToDel , pRefStr2
char *strDel(char* str,char chToDel)
{
assert((str!=NULL)&& (chToDel!=NULL));
char *pRefStr1, *pRefStr2;
pRefStr1=pRefStr2=str;// str, str
while(*pRefStr2++){
if(*pRefStr2!=chToDel)
{
*pRefStr1++=*pRefStr2;// chToDel , pRefStr1, pRefStr1 ;
}
}
*pRefStr1='\0';
return str;
}
관건: C 언어 프로그램의 순서와 지침에 주의하십시오.
테스트:
#include<iostream.h>
#include<assert.h>
void main()
{
char destStr[10]="aadddfcca";
char delStr='a';
strDel(destStr,delStr);
cout<<destStr<<endl;}
결과 출력:
dddfcc
3. 문자열 크기 비교
nt strcmp(const char *string1, const char *string2); 문자열string1과string2의 크기를 비교합니다.반환값 <0,string1이string2보다 작다는 것을 나타낸다.되돌아오는 값은 0이고string1은string2와 같다는 것을 나타낸다.반환값 > 0은string1이string2보다 크다는 것을 나타낸다.
소스:
int strcmp(const char *s, const char *t) {
assert(s != NULL && t != NULL);
while (*s && *t && *s == *t)
{
++ s;
++ t;
}
return (*s - *t);
}
두 문자열이 같은지 아닌지만 판단하는 프로그램도 썼다.
int strCmp(char *strOne,char *strTwo)
{
assert((strOne!=NULL) && (strTwo!=NULL));
while(*strOne++ && *strTwo++)
{
if(*strOne!=*strTwo)
{
return 0;
break;
}
}
return 1;
}
테스트:
#include<iostream.h>
#include<assert.h>
void main()
{
char str1[10]="aaabbbccc";
char str2[10]="aa";
int result = strCmp(str1,str2);
cout<<result<<endl;
}
결과 출력:
크기 판단, 출력 결과 97
알파벳 a의 ascii 코드입니다.
출력 결과는 0입니다.
4. 문자열의 순서 반전
char *strrev(char *string); 문자열string의 문자 순서를 뒤집습니다.NULL 끝 문자의 위치는 변경되지 않습니다.조정된 문자열의 바늘을 되돌려줍니다.
소스:
// : 。
char *strrev(char *str)
{
assert(str != NULL);
char *st,*et;
char tmpCh;
st=et=str;
while(*et!='\0') ++et;
for(--et,st;st<et;++st,--et)
{
tmpCh=*st;
*st=*et;
*et=tmpCh;
}
return str;
}
테스트:
#include<iostream.h>
#include<assert.h>
void main()
{
char strings[4]="abc";
strrev(strings);
cout<<strings<<endl;
}
테스트 결과:
bca
계속 업데이트...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.