문자열을 숫자로 변환하는 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;
}




SGP 제품을 처음 산게 아이폰4 출시 초기 때니까 09년도 말쯤 되었겠네요.

그 때 샀었던게 명칭은  잘 기억 안나지만 "네오 하이브리드 레벤톤" 이었을 거에요.


(아래 사진에서 노랑색이 레벤톤)



아이폰4 블랙에 네오 하이브리드 레벤톤이 정말 잘 어울려서 오랜 시간 끼고 다녔었고,

아이폰5를 구매 했을 때도 레벤톤의 좋은 인상이 기억에 남아 

SGP제품의 네오 하이브리드EX 민트를 구매했고, 생각대로 산뜻하고 이뻤습니다.

근데 그 산뜻함은 오래가지 못 하더군요 ㅠ_ㅠ

레벤톤 같은 경우 고무(실리콘?)가 검정이라 몰랐는데, 고무가 흰색인 민트는 변색이 되더군요 ㅡㅡ

변색되니 때 꾸정물엔 담근듯 지져분해 보이고, 조잡해 보이고 오만정이 다 떨어졌어요ㅠㅠ

그래서 다신 SGP 안사려고 했는데 마지막으로 네오하이브리드 EX 샴페인 골드 샀습니다.

이것도 고무가 흰색이라 변색 되겠지만 나중에 교환 서비스를 통해서 교환 받으려구요~

물론 민트도 교환 받을 거구요.




이번 SGP 네오 하이브리드 EX 샴페인 골드는 색감이 별로 안 이뻐요.

민트는 유광 플라스틱 느낌이라면 샴페인 골드는 무광에 만지면 싼티나는 재질 느낌 ㅠ_ㅠ





아이폰5 화이트랑 아이폰5s 샴페인 골드 비교입니다.

골드는 밖에서 가끔 화이트처럼 보일 때가 있어요. 물론 집에서도요 ^^




변색된 고무랑 새 고무 입니다.

사진으로는 별 차이 없어보이는데 실물은 차이가 많이나요.









아래는 조금 어둡게 나온, 아이폰5에 사용하던 스워드5.

단점은 먼지가 많이 끼고.. 볼륨키 누르는게 더럽게 힘들고.. 수신률이 조금 떨어짐..



결론은.. 뭐 하나 마음에 드는 케이스가 없네요 




자작나스에 장착할 SSD SATA DOM Vertical D6214이 어제 도착했네요+_+ㅋ

기존 ssd 64g + 2T로 구성된 나스를 D6214 * 3 + 2T로 바꿔야겠네여

그래서 하나의 D6214에는 ESXi를, 또 하나는 Xpenology나 Nas4Free, OMV(OpenMediaVault) 중에 하나를.

마지막 하나는 7설치 하렵니다.


장착은 내일해서 작업해야겠습니다.







문자열을 초기화하는 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;
}




25일! 드디어 대리점에서 아이폰 5s 골드 받아왔네요 +_+

공홈 예약 때 놓쳐서 대리점에서 예약 했고, 13만원 할인 받았어요.

더 할인 안되냐고 수줍게 여쭤봤는데 안된다네요ㅠ.ㅠ


실물 직접 보니까 사진보다는 조금 덜 이쁜거 같아요ㅋㅋ

골드 색상이 조금 밋밋하달까?하는 느낌이 있어요.


필름 안 붙이고 찍은거 있고 붙이고 찍은거 있는데

사진 상으로는 별로 차이가 없네요

즐감하세요 ㅎㅎ


















전에 사용하던 5 화이트랑 같이 찍어봤습니다.


저랑 동생이랑 지금까지 사용한 아이폰이에요 ㅋㅋ


5 상자보다 5s 상자가 더 얇습니다.


오랜만에 필름 붙이는 데 손 떨리네요 ㅎㄷㄷ

생각보다 잘 붙여져서 다행입니다




문자셋 검색하는 함수 중 strspn함수와 strcspn함수에 관한 내용입니다.

단일 문자 또는 ASCII코드 값의 검색은 문자 검색 관련 함수 - strchr, strrchr을 참고하세요.


※요약

strspn : 문자열에서 일치되지 않는 첫 번째 문자의 위치를 검색합니다.(대소문자 구분)

strcspn : 문자열에서 일치되는 첫 번째 문자의 위치를 검색합니다.(대소문자 구분)


※함수 원형 및 설명


예제

-strspn, strcspn

#include <stdio.h>
#include <string.h>	//strspn, strcspn

int main( )
{
	char string[] = "a1b2c3 A1B2C3";
	char strCharset[] = "12ab";
	int nIndex=0;

	//문자열에서 '1', '2', 'a', 'b' 문자가 없는 첫 위치를 검색
	nIndex = strspn( string, strCharset );
	printf( "index : %d, %s\n", nIndex, &string[nIndex] );

	//문자열에서 'A', 'B', 'C' 중 일치되는 첫 문자가 있는 위치 검색
	nIndex = strcspn( string, "ABC" );
	printf( "index : %d, %s\n", nIndex, &string[nIndex] );

	return 0;
}




"장인은 도구를 가리지 않는다"는 말이 있지만 장인에게 좋은 도구가 주어지면 같은 걸 만들어도 좀더 좋은 작품이 좀더 편하게 나오는 건 사실입니다 -_-


또한 이 글을 읽는 우리들은 코딩을 잘 하는 장인들이 아니기 때문에 "그 동안 코딩이 잘 안되었던건 폰트 탓이야"라고 되뇌이며 이번에 개발자 폰트에 대해 알아볼까 합니다.


※개발자 폰트의 특징

-가독성이 좋아야 한다.

-확장된 문자셋을 지원하여야 한다.

-공백의 구분이 명확해야 한다.

-i, I, l 을 쉽게 구별할 수 있어야 한다.

-o, O, 0을 쉽게 구별할 수 있어야 한다.

-괄호 및 대괄호, 특수문자 등의 구분이 명확해야 한다.


폰트 종류

Bitstream Vera Sans Mono

Dina

Fixedsys

Monaco

나눔고딕코딩


현재 제가 사용하고 있는 건 Bitstream Vera Sans Mono입니다. 전에는 학교에서 친구들의 코드를 볼 때 제가 사용하는 폰트가 아니면 보지 못하는 강박증? 같은게 있었는데 지금은 폰트에 상관없이 봅니다 -_-ㅋㅋ




문자열 길이 및 버퍼 크기 구하는 함수 중 strlen함수와 sizeof연산자에 관한 내용입니다.


※요약

strlen : 문자열의 길이를 구합니다.

sizeof : sizeof는 실제로 차지하고 있는 메모리의 크기를 구합니다.


※함수 원형 및 설명


예제

-strlen, sizeof

#include <stdio.h>	//printf
#include <iostream>	//cout
#include <string.h>	//strlen

#define print(nLen) printf( "%d\n", nLen )
#define PrintOut(nLen) std::cout<<nLen<<std::endl

int main( )
{
	char string[50] = "This is a simple string";
	int nStrLen(0);
	int nStrSize(0);

	nStrLen = strlen( string );
	print(nStrLen);

	nStrSize = sizeof( string );
	PrintOut( nStrSize );

	return 0;
}


+ Recent posts