C 언어 문자 함수,메모리 함수 기능 및 구현 코드
strlen 함수(문자열 길이 구하 기)
문자열 길 이 를\0 까지 통계 합 니 다.
주의 점
1.
2.매개 변 수 는 문자열 이 고 반환 유형 은 기호 가 없 는 정형 입 니 다.특히 다음 그림 에 주의 하 십시오.
이 그림 의 운행 결 과 는>입 니 다.기호 가 없 는 정형 가감 은 반드시 0 보다 많은 숫자 이기 때문에 이런 비 교 는 피해 야 합 니 다.
3、종료 표 지 는\0
시 뮬 레이 션 실현
int my_strlen(const char *str){
assert(str);
if(*str=='\0'){
return 0;
}
return 1 + my_strlen(str + 1);//
}
strcpy 함수(문자열 복사 함수)sorc 배열 의 첫 번 째\0 전(\0 포함)의 모든 내용 을 dest 배열 로 복사 합 니 다.
주의 점
1.dest 배열 은 source 배열 을 충분히 수용 해 야 합 니 다.
2.source 배열 은 반드시\0 을 중지 표지 로 해 야 합 니 다.
3.dest 배열 을 변경 할 수 있 습 니 다.
4、\0 은 복 사 됩 니 다
시 뮬 레이 션 실현
char *my_strcpy(char *dest,const char *sorc)
{
assert(dest && sorc);
char *ret = dest;
while (*dest++ = *sorc++)// /0 ,
{
;
}
return ret;
}
strcat 함수(문자열 연결 함수)dest 배열 의 첫 번 째\0 부터 sorc 함수 의 첫 번 째\0 전의 모든 내용 을 복사 합 니 다.dest 함수 의 첫 번 째\0 은 덮어 쓰 고 sorc 함수 의\0 은 복사 합 니 다.
주의 점
1.dest 배열 은 자신 과 source 배열 을 충분히 수용 해 야 합 니 다.
2.dest 배열 은 공간 을 수정 해 야 합 니 다.
3.dest,source 배열 은 모두\0 이 있 습 니 다.
4.중단 조건 이 없 기 때문에 스스로 복사 할 수 없습니다.
시 뮬 레이 션 실현
char *my_strcat(char *dest, const char *sorc)
{
char *ret = dest;
while (*dest != '\0')
{
dest++;
}
while (*dest++ = *sorc++)
{
;
}
return ret;
}
strcmp 함수두 문자열 을 비교 하고 한 자리 씩 비교 합 니 다.대응 하 는 위치 가 다 르 면 ASCII 코드 가 줄 어 든 값 을 되 돌려 줍 니 다.각각 같 으 면(즉 전체 문자열 이 같 음)0 을 되 돌려 줍 니 다.
주의 점
1.길이 가 아 닌 해당 위치의 ASCII 코드 값 비교
시 뮬 레이 션 실현
int my_strcmp(const char *str1, const char *str2)
{
assert(str1 && str2);
while (*str1 == *str2)
{
if (*str1 == '\0' && *str2 == '\0')
{
return 0;
}
str1++;
str2++;
}
return *str1 - *str2;
}
strstr 함수모 문자열 에서 하위 문자열 을 찾 으 면 모 문자열 의 첫 주 소 를 되 돌려 주 고 찾 지 않 으 면 빈 지침 을 되 돌려 줍 니 다.
시 뮬 레이 션 실현
여기 서 폭력 적 인 방법 으로 해답 을 구하 면 KMP 알고리즘 이 더 좋 은 해답 을 제공 합 니 다.
char *my_strstr(char *mum, char *child)
{
assert(mum && child);
const char *pc = mum;
while (*pc)
{
const char *p1 = pc;
const char *p2 = child;
while (*p1 == *p2 && *p1 && *p2)
{
p1++;
p2++;
}
if (*p2 == '\0')
{
return (char *)pc;
}
pc++;
}
return NULL;
}
strtok 함수1.두 개의 인자(arr 소스 문자열,sep 기호 문자열(절단 표지))
2.두 번 째 문자열 을 얻 으 려 면 빈 포인터 가 필요 합 니 다.
쓰다
int main()
{
char arr[]="skyline&csdn.com";
char arr2[30]={0};// strtok ,
char sep[]="&.";
strcpy(arr2,arr);
printf("%s
",strtok(arr2,sep));
printf("%s
",strtok(NULL,sep));
printf("%s
",strtok(NULL,sep));
return 0;
}
결과:strerror 함수
다른 오류 경보 생 성
쓰다
int main()
{
prinf("%s
",strerror(errno));//
}
memcpy 함수한 바이트,한 바이트 의 복사,모두 count 바이트 복사;
주의 점
1.이 함 수 는 서로 관련 이 없 는 두 개의 메모리 블록(같 으 면 알고리즘 제한 으로 인해 불가능)을 사용 해 야 합 니 다.예 를 들 어
int main()
{
int num1[6] = {1, 2, 3, 4, 5, 6};
my_memcpy(num1+2, num1, 16);// 121234
// 121212
for (int i = 0; i < 6;i++){
printf("%d", num1[i]);
}
return 0;
}
시 뮬 레이 션 실현
void my_memcpy(void *dest, void *src, size_t count){
assert(dest && src);
while (count--)
{
*(((char *)dest)) = *(((char *)src));
dest=(char*)dest+1;// ++(char*)dest,gcc (char*)dest
src=(char*)src+1;
}
}
memmove 함수주의 점
1.상기 에 나타 난 관련 메모 리 를 받 아들 일 수 있 습 니 다.
시 뮬 레이 션 실현
void my_memmove(void *dest, void *src, size_t count)
{
assert(dest && src);
if (dest > src)// ,
{
while (count--)
{
*(((char *)dest) + count) = *(((char *)src) + count);
}
}
else
{
while (count--)//)// ,
{
*(((char *)dest)) = *(((char *)src));
dest=(char*)dest+1;
src=(char*)src+1;
}
}
}
memset 함수하나의 바이트 를 하나의 값 으로 설정 하고,모두 count 바이트 를 설정 합 니 다.
주의 점
1.바이트 단위 로 설정 되 어 있 습 니 다.int num[10]={0},memset(num,1,40)은 배열 을 모두 1 로 만 들 수 없습니다.int 배열 의 한 요 소 는 4 개의 바이트 이 고 실제 적 으로 모든 요소 가 01 01 01 01 01 로 변 하기 때문에 잘못된 것 입 니 다.
C 언어 문자 함수,메모리 함수 기능 및 구현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C 언어 문자 함수,메모리 함수 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C 언어 체인 시계는 뱀을 탐식하는 작은 게임을 실현한다본고의 실례는 여러분에게 C 언어 체인표가 뱀 탐식 게임을 실현하는 구체적인 코드를 공유하여 참고하도록 하였으며, 구체적인 내용은 다음과 같다. 프로젝트 이름: 뱀놀이 운영 환경: Linux 프로그래밍 언어: C 언...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.