본문 바로가기
Basic/C/C++

[C언어] 제 19 강 : 문자열 관련 표준 함수

by boxbop 2012. 1. 26.
반응형


[문자열 함수]

1.
int puts(const char* s);
성공시 0이아닌 값을, 실패 시 EOF 반환
ex) puts("hello boxbop!");

2.
int putchar(int c);
성공 시 출력된 문자 정보를, 실패 시 EOF 반환
ex) putchar('A');

cf)EOF는 End Of File의 약자로 상수 값은 -1입니다. 파일의 끝을 표시하기 위해 정의된 상수입니다.

3.
char* gets(char* s);
성공 시 매개변수로 전달된 값을, 실패 시 NULL 포인터 반환
ex) char str[10];
      gets(str);
이함수를 호출하면서 메모리의 주소 값을 인자로 전달하면, 키보드로부터 입력되는 문자열이, 전달된 주소의 메모리에 저장됩니다.

4.
int getchar(void);
성공 시 입력된 문자를, 실패시 EOF 반환
ex) int ch;
      ch = getchar();

[문자열 컨트롤 함수]

1.
size_t strlen(const char* s);
문자열의 길이 정보 반환

2.
char* strcpy(char* dest, const char* src);
char* strncpy(char* dest, const char* src, size_t n);
->문자열을 배열에 복사합니다.
ex) char src[10]="hi boxbop";
      char dest[10];
      strcpy(dest, src);

3.
char* strcat(char* dest, const char* src);
char* strncat(char* dest, const char* src, size_t n);
첫 번째 매개변수에 전달된 주소 값 반환
->문자열 뒤에 문자열을 복사

4.
int strcmp(const char* s1, const char* s2);
int strncmp(const char* s1, const char* s2, size_t n);
두 문자열이 동일하면 0, 동일하지 않으면 0이 아닌 값 반환
->두 문자열이 서로 동일한지 비교

[문자열 정보 함수]

1.
char* strchr(const char* s, int c);
char* strrchr(const char* s, int c);
문자를 찾을 시 해당 문자의 포인터를, 못 찾을 시 NULL 포인터 반환
->문자열에서 특정 문자가 등장하는 위치를 찾는다.
strchr은 처음 등장하는 위치를, strrchr은 마지막 위치를 찾는다.

2.
char* strstr(const char* src, const char* sub);
문자열을 찾을 시 해당 문자열의 시작 주소를, 못 찾을시 NULL 포인터를 반환
->문자열 안에 특정 문자열이 존재하는지 확인

3.
char* strtok(char* str, const char* set);
다음 번 토큰의 주소 값을 반환하며, 반환할 토큰이 없으면 NULL포인터 반환
->기준을 기준으로 문자열을 나눌경우 사용
ex) char str[] = "aaa-bbb";
      char* tok;
      tok = strtok(str,"-_!"); -, _, ! 을 기준으로 사용

      while(tok != NULL)
  {
     printf("토큰 : %s ", tok);
     tok=strtok(NULL, "-_!");
   }

3번째 줄을 보시면 문자열 str은 기호 -, _, !을 기준으로 토큰이 나뉩니다. 그리고 이렇게 함수가 호출이 되고 나면, 첫 번째 토큰의 주소 값이 반환됩니다. while문 내에 있는 strtok함수를 보면 두 번째 토큰의 정보를 얻기위해 다음과 같은 형태로 함수를 호출하고 있습니다. 첫 번째인자로는 NULL을 전달하여 3번째 줄에서 전달한 str의 정보를 함수 내에서 유지합니다. 두 번째 인자인 기준은 동일합니다.

[문자열 변환 함수]

double atof (const char* str);
int atoi (const char* str);
long atol (const char* str);
long long atoll (const char* str);
->각각 double, int long, long long형 데이터로 변환합니다.
ex) int num;
      num = atoi("123");


[sptrinf & sscanf]

1.
int sprintf(char* restrict s, const char* restrict format,...);
성공 시 저장된 문자열의 길이, 실패 시 EOF 반환
->문자열 배열에 저장한다.

ex)
int num1 = 1;
char str[] = "hello";
float num2 = 1.23;

char strBuf[20];
sptrinf(strBuf,"%d %s %f", num1, str, num2);
puts(strBuf);

2.
int sscanf(char* restrict s, const char* restrict format,...);
성공 시 읽어 들인 데이터의 개수, 실패 시 EOF 반환
->문자열 배열로부터 데이터를 추출한다.

ex)
int num1;
char str[10];
float num2;

sscanf("hello 1 1.23", "%s %d %f", str, &num1, &num2);




반응형