Skip to content

Instantly share code, notes, and snippets.

@opklnm102
Last active August 29, 2015 14:06
Show Gist options
  • Save opklnm102/129973f7550cdc984d46 to your computer and use it in GitHub Desktop.
Save opklnm102/129973f7550cdc984d46 to your computer and use it in GitHub Desktop.
software global project
//시나리오에 입각해서 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