※요약

isspace : 문자가 공백이나 개행, 탭인지 조사하는 함수



※함수 원형 및 설명

int isspace( int c );
//c : 검사할 문자 또는 아스키 값
//반환값 : 문자가 공백이나 개행, 탭 문자이면 true, 아니면 false


※예제

#include <stdio.h>
#include <ctype.h>

int main( )
{
	bool bCheck = false;
	char strTemp[] = " \n\t5";

	bCheck = isspace( strTemp[0] );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isspace( strTemp[1] );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isspace( strTemp[2] );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isspace( strTemp[3] );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isspace( '\n' );
	printf( "%s\n", bCheck ? "True" : "False" );

	return 0;
}




※요약

isalnum : 문자가 숫자 0~9나 대문자 A~Z, 소문자 a~z에 속하는지 검사합니다.



※함수 원형 및 설명

int isalnum( int c );
//c : 검사할 문자 또는 아스키 값
//반환값 : 문자가 숫자 0~9나 대문자 A~Z, 소문자 a~z에 속하면 true, 아니면 false



※예제

#include <stdio.h>
#include <ctype.h>

int main( )
{
	bool bCheck = false;
	char strTemp[] = "2T3y4J";

	bCheck = isalnum( '3' );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isalnum( 97 );		//97은 문자로 'a'
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isalnum( strTemp[1] );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isalnum( '3' );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isalnum( '*' );
	printf( "%s\n", bCheck ? "True" : "False" );

	return 0;
}




※요약

isupper : 문자가 대문자 A~Z 사이에 속하는지 검사

islower : 문자가 소문자 a~z 사이에 속하는지 검사

isalpha : 문자가 대소문자 A~Z, a~z에 속하는지 검사



※함수 원형 및 설명

int isupper( int c );
//c : 검사할 문자 또는 아스키 값
//반환값 : 문자가 A~Z 사이에 속하면 true, 아니면 false

int islower( int c );
//c : 검사할 문자 또는 아스키 값
//반환값 : 문자가 a~z 사이에 속하면 true, 아니면 false

int isalpha( int c );
//c : 검사할 문자 또는 아스키 값
//반환값 : 문자가 A~Z나 a~z 사이에 속하면 true, 아니면 false


※예제

#include <stdio.h>
#include <ctype.h>

int main( )
{
	bool bCheck = false;
	char strTemp[] = "2T3y4J";

	//isupper
	bCheck = isupper( '3' );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isupper( 97 );		//97은 문자로 'a'
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isupper( strTemp[1] );
	printf( "%s\n", bCheck ? "True" : "False" );

	//islower
	bCheck = islower( '3' );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = islower( 97 );		//97은 문자로 'a'
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = islower( strTemp[1] );
	printf( "%s\n", bCheck ? "True" : "False" );

	//isalpha
	bCheck = isalpha( '3' );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isalpha( 97 );		//97은 문자로 'a'
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isalpha( strTemp[1] );
	printf( "%s\n", bCheck ? "True" : "False" );

	return 0;
}



※요약

isdigit : 문자가 숫자 0~9 사이에 속하는지 검사하는 함수



※함수 원형 및 설명

int isdigit( int c );
//c : 검사할 문자 또는 아스키 값
//반환값 : 문자가 0~9 사이에 속하면 true, 아니면 false


※예제

#include <stdio.h>
#include <ctype.h>

int main( )
{
	bool bCheck = false;
	char strTemp[] = "2t3y4j";

	bCheck = isdigit( '3' );
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isdigit( 49 );		//49는 문자로 1
	printf( "%s\n", bCheck ? "True" : "False" );

	bCheck = isdigit( strTemp[1] );
	printf( "%s\n", bCheck ? "True" : "False" );

	return 0;
}




숫자를 문자열로 바꾸는 itoa함수, ltoa함수, ultoa함수, fcvt함수, ecvt함수, gcvt함수에 관한 내용입니다.


※요약

itoa : integer 값을 2진, 8진, 10진, 16진 문자열로 변환합니다.

ltoa : long 값을 2진, 8진, 10진, 16진 문자열로 변환합니다.

ultoa : unsigned long 값을 2진, 8진, 10진, 16진 문자열로 변환합니다.

fcvt : 실수(고정 소수점:float) 값을 문자열로 변환합니다.

ecvt : 실수(부동 소수점:double) 값을 문자열로 변환합니다.

gcvt : 실수 값을 부호와 소수점을 포함하여 문자열로 변환합니다.


※함수 원형 및 설명

char *itoa( int value, char *string, int radix );
char *ltoa( long value, char *string, int radix );
char *ultoa( unsigned long value, char *string, int radix );
//value : 문자열로 변환될 정수 값
//string : 변환된 문자열이 저장될 버퍼의 포인터
//radix : 값의 기수. 10진수는 10, 2진수는 2, 16진수는 16 등 2~36 사이의 값
//반환값 : 변환된 문자열이 저장된 string 버퍼의 포인터

char *fcvt( double value, int count, int *dec, int *sign );
//value : 문자열로 변환될 실수 값
//count : 변환 문자열 중 소수점 이하 숫자의 길이
//dec : 소수점의 위치가 저장될 변수의 포인터
//sign : 부호가 저장될 변수의 포인터
//반환값 : 변환된 문자열이 저장된 내부 정적영역 버퍼의 포인터

char *ecvt( double value, int count, int *dec, int *sign );
//value : 문자열로 변환될 실수 값
//count : 변환할 문자열의 길이
//dec : 소수점의 위치가 저장될 변수의 포인터
//sign : 부호가 저장될 변수의 포인터
//반환값 : 변환된 문자열이 저장된 내부 정적영역 버퍼의 포인터

char *gcvt( double value, int digits, char *string );
//value : 문자열로 변환될 실수 값
//digits : 변환 시 의미 있는 숫자의 길이
//buffer : 변환된 값을 저장할 문자열 버퍼의 포인터
//반환값 : 변환된 문자열이 저장된 string 버퍼의 포인터



※예제

#include <stdio.h>
#include <stdlib.h>		//itoa, ltoa, ultoa, fcvt, ecvt, gcvt

int main( void )
{
	int  nInt  = 1234567890;
	int  nInt2 = 255;
	long nLong = -1234567890L;
	unsigned long nULong = 345678902UL;

	float nFloat = 3.141592f;
	double nDouble = 3.14e+5;

	int radix;
	char buffer[100];
	int dec, sign;
	char *pbuffer;

	//10진 문자열로 변환
	radix = 10;
	itoa( nInt, buffer, radix );
	printf( "%s\n", buffer );

	ltoa( nLong, buffer, radix );
	printf( "%s\n", buffer );

	itoa( nULong, buffer, radix  );
	printf( "%s\n", buffer );

	//2진 문자열로 변환
	radix = 2;
	itoa( nInt2, buffer, radix );
	printf( "%s\n\n", buffer );

	//16진 문자열로 변환
	radix = 16;
	itoa( nInt2, buffer, radix );
	printf( "%s\n", buffer );

	//--- _fcvt, _ecvt, _gcvt ---
	pbuffer = fcvt( nFloat, 7, &dec, &sign );
	printf( "%s %d\n", pbuffer, dec );

	pbuffer = ecvt( nDouble, 10, &dec, &sign );
	printf( "%s %d\n", pbuffer, dec );

	pbuffer = gcvt( nDouble, 5, buffer );
	printf( "%s %d\n", pbuffer );

	pbuffer = gcvt( nDouble, 10, buffer );
	printf( "%s %d\n", pbuffer );

	return 0;
}




문자열을 숫자로 변환하는 strtol함수, strtoul함수, strtod함수에 관한 내용입니다.


※요약

strtol : 문자열을 long 값으로 변환 합니다. 2진수, 8진수, 16진수 값을 10진수로 변환 합니다. (string to long)

strtoul : 문자열을 unsigned long 값으로 변환 합니다. (string to unsigned long)

strtod : 문자열을 double 값으로 변환 합니다. (string to double)

무작정 외우는 것보다 "string to long, string를 long형으로" 같이 외우면 더 잘 기억납니다.


※함수 원형 및 설명

long strtol( const char *nptr, char **endptr, int base );
//nptr : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//endptr : 변환이 멈춰진 문자열의 포인터
//base : 변환될 문자열의 기수( 2, 8, 10, 16진수 선택 ) 2~36진수까지 가능
//반홥값 : 정수 값(long), 변환 실패시 0L 리턴. errno는 ERANGE로 설정
//		   -2,147,483,648 ~ 2,147,483,647

unsigned long strtoul( const char *nptr, char **endptr, int base );
//nptr : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//endptr : 변환이 멈춰진 문자열의 포인터
//base : 변환될 문자열의 기수( 2, 8, 10, 16진수 선택 ) 2~36진수까지 가능
//반홥값 : 양의 정수 값(unsigned long), 변환 실패시 0L 리턴. errno는 ERANGE로 설정
//		   0~4,294,967,295

double strtod( const char *nptr, char **endptr );
//nptr : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//endptr : 변환이 멈춰진 문자열의 포인터
//반홥값 : 실수 값(double), 변환 실패시 0.0 리턴. errno는 ERANGE로 설정
//		   1.7E +/- 308 (15 digits)


각 데이터형 범위


※예제

#include <stdio.h>
#include <stdlib.h>

int main( )
{
	char *strStrLong = "-1234567890";
	char *strStrDouble = "3.14e+100";
	char *strStrDoubleL = "1234567890123456789012345678901234567890";
	char *strString = "The answer is 50 points";
	char *stop;

	long nLong;
	double nDouble;
	unsigned long nULong;

	nLong = strtol( strStrLong, &stop, 10 );
	printf( "%d\n", nLong );

	nLong = strtol( strString, &stop, 10 );
	printf( "%d stop at '%s'\n", nLong, stop );

	nLong = strtol( &strString[14], &stop, 10 );
	printf( "%d stop at '%s'\n", nLong, stop );

	nULong = strtoul( strStrLong, &stop, 10 );
	printf( "%u\n", nULong );

	nDouble = strtod( strStrDouble, &stop );
	printf( "%.2e\n", nDouble );

	nDouble = strtod( strStrLong, &stop );
	printf( "%.2e\n", nDouble );

	nDouble = strtod( strStrDoubleL, &stop );
	printf( "%.2e\n", nDouble );

	//2진수, 8진수, 16진수를 10진수로 변환
	char *strStr2  = "1010";		//2진수
	char *strStr8  = "0123";		//8진수
	char *strStr16 = "0xFF";		//16진수
	int radix;

	radix = 2;
	nLong = strtol( strStr2, &stop, radix );
	printf( "%d\n", nLong );

	radix = 8;
	nLong = strtol( strStr8, &stop, radix );
	printf( "%d\n", nLong );

	radix = 16;
	nLong = strtol( strStr16, &stop, radix );
	printf( "%d\n", nLong );

	return 0;
}



문자열을 숫자로 변환하는 atoi함수, _atoi64함수, atol함수, atof함수에 관한 내용입니다.


※요약

atoi : 문자열을 integer 값으로 변환 합니다. (ascii to integer)

_atoi64 : 문자열을 __int64 값으로 변환 합니다.

atol : 문자열을 long 값으로 변환 합니다. (ascii to long)

atof : 문자열을 double 값으로 변환 합니다. (ascii to float)

무작정 atoi(아토이ㅋㅋ)로 외우는 것보다 "ASCii to integer, 아스키를 정수형으로" 같이 외우면 더 잘 기억납니다.


※함수 원형 및 설명

int atoi( const char *string );
//string : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//반홥값 : 정수 값(int), 변환 실패시 0 리턴
//		   -2,147,483,648 ~ 2,147,483,647

__int64 _atoi64( const char *string );
//string : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//반홥값 : 정수 값(__int64), 변환 실패시 0 리턴
//		   -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

long atol( const char *string );
//string : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//반홥값 : 정수 값(long), 변환 실패시 0L 리턴
//		   -2,147,483,648 ~ 2,147,483,647

float atof( const char *string );
//string : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//반홥값 : 실수 값(double), 변환 실패시 0.0 리턴
//		   1.7E +⁄- 308 (15 digits)


각 데이터형 범위


예제

-atoi, _atoi64, atol, atof

#include <stdio.h>
#include <stdlib.h>

int main( )
{
	char *strInt     = "123456789";
	char *strInt64   = "1234567890123456789";
	char *strLong    = "123456789";
	char *strDouble  = "3.14e+100";
	char *strStrInt  = "value = 123456789";

	int nInt;
	__int64 nInt64;
	long lLong;
	double dDouble;
	
	nInt = atoi( strInt );
	printf( "%d\n", nInt );

	nInt = atoi( strStrInt );
	printf( "%d\n", nInt );
	
	nInt = atoi( &strStrInt[8] );
	printf( "%d\n", nInt );

	nInt64 = _atoi64( strInt64 );
	printf( "%I64d\n", nInt64 );

	lLong = atol( strLong );
	printf( "%ld\n", lLong );

	dDouble = atof( strDouble );
	printf( "%.2e\n", dDouble );
	
	dDouble = atof( strInt );
	printf( "%.2e\n", dDouble );

	return 0;
}




문자열을 초기화하는 strset함수와 strnset함수에 관한 내용입니다.


※요약

strset : 문자열을 특정 문자 또는 ASCII값으로 초기화 합니다.

strnset : 문자열을 일정 길이만큼 초기화 합니다.


※함수 원형 및 설명

예제

-strset, strnset

#include <stdio.h>
#include <string.h>	//strset, strnset

int main( )
{
	char string[] = "Test Code";
	char *pstr;

	pstr = strset( string, '*' );
	printf( "%s\n", pstr );
	printf( "%s\n", string );

	putchar( '\n' );

	pstr = strset( &string[3], 'T' );
	printf( "%s\n", pstr );
	printf( "%s\n", string );

	putchar( '\n' );

	pstr = strnset( string, 0x61, 5 );
	printf( "%s\n", pstr );
	printf( "%s\n", string );

	putchar( '\n' );

	pstr = strnset( &string[3], 0x7a, 2 );
	printf( "%s\n", pstr );
	printf( "%s\n", string );

	return 0;
}




문자열을 거꾸로 뒤집는 strrev함수에 관한 내용입니다.

rev는 reverse의 약자인듯 싶네요.


※요약

strrev : 문자열을 거꾸로 뒤집습니다.


※함수 원형 및 설명


예제

-strrev

#include <stdio.h>
#include <string.h>	//strrev

int main( )
{
	char string[] = "This is simple code";
	char *pstr;

	pstr = strrev( string );
	printf( "%s\n", pstr );
	printf( "%s\n", string );

	return 0;
}




문자열 대소문자 변환 관련 함수 중 strupr함수와 strlwr함수에 관한 내용입니다.


※요약

strupr : 문자열을 대문자로 변환 합니다.

strlwr : 문자열을 소문자로 변환 합니다.


※함수 원형 및 설명


예제

-strupr, strlwr

#include <stdio.h>
#include <string.h>	//strupr, strlwr

int main( )
{
	char string1[]="Simple Code";
	char string2[]="Example Program";
	char *pStr;

	pStr = strupr( string1 );
	printf( "%s\n", pStr );
	printf( "%s\n", string1 );

	pStr = strlwr( string2 );
	printf( "%s\n", pStr );
	printf( "%s\n", string2 );

	return 0;
}


+ Recent posts