문자열 중에 특정 문자 찾기
#include <strings.h>
#include <stdio.h>

int main()
{
    char data[] = "hello:world=ok";
    char *sp, *dp;
    char mydata[20] = {0x00,};

    sp = index(data, ':');
    dp = rindex(data, '=');

    strncpy(mydata,sp+1, dp-sp-1);
    printf("[%s]\n", mydata);
}
  • 문자를 찾았다면 찾는 문자가 있는 부분의 포인터를 반환한다.
  • 문자를 찾지 못했다면 NULL 을 반환한다.
문자열 중에 문자열을 찾기
#include <string.h>

int main()
{
    char *me = "my name=yundream";
    char *mp;

    mp = strstr (me, "///")+1;
    printf("%s\n", mp);
}
문자열 에서 두번째 인수를 찾고
  • 문자열을 찾았다면 찾은 문자열 위치의 포인터를 반환
  • 문자열을 못 찾았다면 NULL 반환
 
문자열을 지정한 개수만큼 비교하기
#include <string.h>

int main()
{
    char *a = "abcdef";
    char *b = "abcdefg";

    printf("%d\n", strncmp(a, b, 4));
}
 
strcmp() 와는 달리 지정한 개수만큼을 비교해서
  • 0 : 문자열이 같다.
  • - : 첫번째 인수가 작다 
  • + : 두번째 인수가 작다
문자열을 개수 만큼 복사하기
#include <strings.h>
#include <stdio.h>

int main()
{
    char data[] = "hello:world=ok";
    char *sp, *dp;
    char mydata[20] = {0x00,};

    sp = index(data, ':');
    dp = rindex(data, '=');

    strncpy(mydata,sp+1, dp-sp-1);
    printf("[%s]\n", mydata);
}
 
문자열을 정수로 변환하기
#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf( "%d\n", atoi( "-567"));    // 문자열을 integer 로 변환
    printf( "%d\n", atoi( "\n-567"));  // 문자열 앞의 공백문자, \t, \n 등은 무시
    printf( "%d\n", atol( "-567"));    // 문자열을 long 로 변환
}
  
문자열 복사하기
char    tmp[100];
char   *tmp2 = "123456789";
  
memset( tmp, 'j', 100);
  
strcpy( tmp, tmp2);                     // strcpy() 는 문자열 끝의 NULL 까지 복사한다.
printf( "%s\n", tmp);

strncpy( tmp, tmp2, strlen( tmp2));    // 그러나 strncpy() 는 개수만큼 복사하므로 NULL 까지 복사되지 않는다.
printf( "%s\n", tmp);

// 그러므로 strncpy() 를 사용하려면,
// NULL 을 복사 후에 붙여 넣기를 하거나,
// 복사전에 아예 memset() 을 이용하여 NULL 로 도배를 한다.
 
모두 대문자로 변환
#include 

void to_upper_str( char *buff)
{   
    while( *buff)
       *buff++  = (char)toupper( (char)*buff);
}