-
-
Save opklnm102/129973f7550cdc984d46 to your computer and use it in GitHub Desktop.
software global project
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//시나리오에 입각해서 mystrlen(),mystrcmp(),mystrcpy(),mystrcat() 함수작성 | |
#include<stdio.h> | |
#include<ctype.h> | |
int mystrlen(char *); //문자열 길이를 반환 마지막 null문자는 길이에 포함 x | |
int mystrcmp(char *, char *); //앞 문자열이 뒷 문자열보다 크면 1 작으면 -1 같으면 0 | |
void mystrcpy(char *,char *); //뒷문자열을 앞문자열에 복사 | |
void mystrcat(char *,char *); //앞문자열 뒤에 뒷문자열을 복사 | |
void main(int argc, char *argv[]) | |
{ | |
char str1[80],str2[80],str3[80]; //3개의 문자열을 다음과 같이 선언 char str1[80],str2[80],str3[80] | |
printf("Type first string : ");gets(str1); //두 개의 문자열을 입력 받는다 gets(str1); get(str2) | |
printf("Type second string : ");gets(str2); | |
printf("Length of two strings : %d(%s), %d(%s)\n",mystrlen(str1),str1,mystrlen(str2),str2); //두 문자열의 길이를 출력 | |
if(mystrcmp(str1,str2) == 1) //두 문자열을 비교하여 더 큰 문자열을 출력한다. | |
printf("Larger string : %s\n",str1); | |
else if(mystrcmp(str1,str2) == -1) | |
printf("Larger string : %s\n",str2); | |
else | |
printf("No larger string\n"); | |
mystrcpy(str3,str1); //str1문자열을 str3에 복사한 후 , str3 문자열을 출력한다 | |
printf("copied string : %s from %s\n",str3,str1); | |
mystrcat(str1,str2); //str2 문자열을 str1 문자열 뒤에 붙인후 str1 문자열을 출력한다. | |
printf("Concatenated string : %s with %s\n",str1,str2); | |
} | |
//모든 함수 내에서의 문자열 처리는 포인터 변수를 사용한다/(배열의 인덱스사용x) | |
//문자열 길이를 반환 마지막 null문자는 길이에 포함 x | |
int mystrlen(char *s){ | |
int len=0; | |
char *sp; | |
sp=s; | |
while(*sp != '\0'){ | |
len++; | |
sp++; | |
} | |
return len; | |
} | |
//앞 문자열이 뒷 문자열보다 크면 1 작으면 -1 같으면 0(코드 값 비교) | |
int mystrcmp(char *s1, char *s2){ | |
char *sp1,*sp2; | |
int i; | |
sp1=s1; | |
sp2=s2; | |
for(i=0;*(sp1+i) != '\0';i++){ | |
if(*(sp1+i) != *(sp2+i)) break; | |
} | |
if(*(sp1+i) == *(sp2+i)) | |
return 0; | |
else if(*(sp1+i) > *(sp2+i)) | |
return 1; | |
else return -1; | |
} | |
//뒷문자열을 앞문자열에 복사 | |
void mystrcpy(char *s1,char *s2){ | |
char *sp1,*sp2; | |
int i,len; | |
sp1=s1; | |
sp2=s2; | |
len=mystrlen(sp2); | |
for(i=0;i<len+1;i++){ | |
*(sp1+i)=*(sp2+i); | |
} | |
s1=sp1; | |
} | |
//앞문자열 뒤에 뒷문자열을 복사 | |
void mystrcat(char *s1,char *s2){ | |
char *sp1,*sp2; | |
int i,j,len1,len2; | |
sp1=s1; | |
sp2=s2; | |
len1=mystrlen(sp1); | |
len2=mystrlen(sp2); | |
for(i=len1,j=0;i<(len1+len2+1);i++,j++){ | |
*(sp1+i)=*(sp2+j); | |
} | |
s1=sp1; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment