When will you grow up?

문자열 다루기 본문

02. Study/C언어

문자열 다루기

미카이 2017. 1. 6. 15:38

저장된 문자열 값을 수치로 변환


헤더 추가

#include <stdlib.h>


사용방법

[atoi -> ASCII to integer(문자열을 정수로 변환)]

변수 = atoi(문자열 배열명);


ex)


int main(void)
{
	char str[] = "-145";
	int suuti = atoi(str);
	printf("%d",suuti);

	return 0;
}



문자열 복사


헤더 추가

#include <string.h>


사용방법

[strcpy -> string copy(문자열 복사)]

strcpy(복사 대상 문자열 배열명, 복사 원본 문자열 배열명);


ex)


int main(void)
{
	char str[10];
	strcpy(str, "STUDENT");
	printf("%s \n",str);

	return 0;
}



문자열 연결


헤더 추가

#include <string.h>


사용방법

[strcat -> string concatenate(문자열 연결)]

strcat(문자열이 저장된 배열, 추가할 문자열에 기억된 배열);


ex)


int main(void)
{
	char str1[20] = "I";
	char str2[] = " am";
	char str3[] = " a student";
	strcat(str1,str2);
	strcat(str1,str3);
	printf("%s \n",str1);
	

	return 0;
}


strcat 주의할점은 적은 요소 개수의 문자 배열에 억지로 집어넣으면 오류가 난다.




문자열 합성 함수


헤더 추가

#include <stdio.h>


사용방법

[sprintf -> string printf formatted(서식 있는 문자열 출력)]

sprintf(저장할 배열,서식문자열,사용될 변수);


ex)


int main(void)
{
	char sumProduct[30];
	char sum[] = "C언어";
	char product[] = "넘나 재밌었다.";
	
	sprintf(sumProduct,"1년간 %s %s",sum,product);
	printf("%s\n",sumProduct);

	return 0;
}




문자열 비교

문자 배열 사이에는 == 연산자를 사용할 수 없다. 이유는 배열 내용(주소값)이 같은지 메모리 주소가 다른지 모르기 때문이다.

여러가지 방법이 있겠지만 배열 각 하나씩 값을 비교를 할 수 있을 것이고 strcmp함수를 이용하여 비교를 할 수 있을것이다.

이 블로그에서는 후자를 이용하여 비교를 해볼것이다.


헤더 추가

#include <string.h>


사용방법

[strcmp -> string compare(문자열 비교)]

변수 = strcmp(문자 배열1, 문자 배열2); ->일치하면 0 반환



ex)



int main(void)
{
	char str1[256];
	char str2[] = "Pen";

	scanf("%s",str1);

	if (strcmp(str1, str2) == 0)
	{
		printf("성공\n");
	}
	else
	{
		printf("실패\n");
	}
	return 0;
}

주의할점은 대소문자 구별을 해야 한다.

Comments