본문 바로가기

알고리즘

[Algorithm] strlen, strcmp, strcpy

◈ 문자열을 다루기


char str[10]; 다음과 같이 선언하여 문자열을 저장할 수 있다.


<코드>


#include <stdio.h>


int main() {


  //Please Enter Your Code Here

  char myString[10];

  

  myString[0] = 'h';

  myString[1] = 'e';

  myString[2] = 'l';

  myString[3] = 'l';

  myString[4] = 'o';

  myString[5] = '\0';

  // 널을 넣어 반드시 문자의 끝을 명시한다.

  

  printf("%s",myString);


  return 0;

}



<코드>


#include <stdio.h>


int main() {


  //Please Enter Your Code Here

  char myString[] = "hello";

// myString '\o' 을 포함하여 myString 사이즈는 6이다.

  printf("%s",myString);


  return 0;

}




결과는 5가 출력이 됩니다. (문자열의 길이를 반환)


역할은 ? 길이를 반환한다. 


우리가 우리 손으로 어떻게 구현할 수 있을까?


기본적인 아이디어는 '\0' 을 찾는다.


널문자가 아니면 cnt를 증가시키는 방법으로 구현할 수 있을 것이다.




<코드>

#include <stdio.h>

#include<string.h>

int main() {


  //Please Enter Your Code Here

  char myString[100];

  fgets(myString,10,stdin);

  

  printf("%d",strlen(myString));


  return 0;

}


입력을 a b c 와 같이 한다면, 

다음과 같이 구현을 한다면, 결과가 5로 출력!

띄어쓰기도 인식하고 문자열의 길이를 출력한다!



두 문자가 같으면 0이 반환되고, 두 문자가 다르면 1이 반환된다.



<코드>

#include <stdio.h>

#include<string.h>


int main() {

  char a[100], b[100];

  int lenA,lenB;

  

  scanf("%s",a);

  scanf("%s",b);

  

  lenA = strlen(a);

  lenB = strlen(b);

  

  if(lenA == lenB){

    bool flag = false; 

    for(int i=0; i<lenA; i++){

      if(a[i]!=b[i]) flag = true;

    }

    if(flag==true){

      printf("Different");

    }else{

      printf("Exactly Same");

    }

  }


  return 0;

}



다음과 같이 수정할 수 있당!


#include <stdio.h>

#include<string.h>


int main() {

  char a[100], b[100];

  

  scanf("%s",a);

  scanf("%s",b);

  

  if(strcmp(a,b) == 0) printf("same!\n");

  else printf("different");  

}




<코드>


#include <stdio.h>

#include<string.h>


int main() {

  char a[100];

  char b[100];

  //Please Enter Your Code Here

  scanf("%s",a);

  scanf("%s",b);

  

  printf("%s\n",a);

  printf("%s\n",b);

  strcpy(a,b);

  printf("%s\n",a);

  printf("%s\n",b);

  

  return 0;

}









'알고리즘' 카테고리의 다른 글

[Algorithm] 과제물 망치기  (0) 2019.02.03
[Algorithm] 대소문자변환  (0) 2019.02.02
[Algorithm] fgets  (0) 2019.02.02
[Algorithm] pfactorization  (0) 2019.02.02
[Algorithm] streetree  (0) 2019.02.02