본문 바로가기

c언어

[C언어] 문자 단위 파일 읽기 함수 - fgetc ※요약 fgetc : 개방된 파일의 단일 문자를 읽는다. ※함수 원형 및 설명 int fgetc( FILE *stream ); //stream : 개방된 FILE 구조체의 포인터 //반환값 : 읽은 문자 값(int), 파일 끝 또는 에러 시 EOF(-1) ※예제 #include #define print(ch) printf( "%x %c\n", ch, ch ) int main( ) { FILE *pFile = NULL; pFile = fopen( "d:\\Text.txt", "r" ); if( pFile == NULL ) { //에러 처리 } else { char chTemp; while( !feof( pFile ) ) { chTemp = fgetc( pFile ); print( chTemp ); } fc.. 더보기
[C언어] 변수 단위 파일 쓰기 함수 - fprintf ※요약 fprintf : 개방된 파일에 변수 단위 출력을 한다. ※특징 fprintf는 sprintf, printf와 사용법이 같다. 파일 포인터는 자동으로 증가한다. ※함수 원형 및 설명 int fprintf( FILE *stream, const char *format, [, argument].. ); //stream : 개방된 FILE 구조체의 포인터 //format : 형식 제어 문자열 //argument : 가변적인 매개변수 //반환값 : 출력한 바이트의 수. 에러 시 EOF(-1) ※예제 #include int main( ) { FILE *pFile = NULL; pFile = fopen( "d:\\Text.txt", "w" ); if( pFile == NULL ) { //에러 처리 } else.. 더보기
[C언어] 변수 단위 파일 읽기 함수 - fscanf ※요약 fscanf : 개방된 파일에서 변수 단위로 입력을 받는다. ※특징 변수 간의 구분은 공백, 탭, 개행 문자로 한다. *는 값을 읽지 않고 건너뛸 때 사용한다. 파일 포인터는 자동으로 증가한다. ※함수 원형 및 설명 int fscanf( FILE *stream, const char *format [, argument].. ); //stream : 개방된 FILE 구조체의 포인터 //format : 형식 제어 문자열 //argument : 가변적인 매개변수 //반환값 : 읽혀진 필드의 수. 파일 끝 또는 에러 시 EOF(-1) ※예제 #include int main( ) { FILE *pFile = NULL; pFile = fopen( "d:\\Text.txt", "r" ); if( pFile ==.. 더보기
[C언어] 비트 연산자 ※요약 당연한 얘기겠지만 비트 연산자는 비트를 연산하기 위한 연산자입니다. 비트란( bit )란 기억 장치의 최소 단위로써 1이나 0을 저장하며 8개가 모여 1Byte를 이룹니다. 비트 연산은 정수나 정수로 변환 가능한 타입만 가능하며, 실수나 포인터 등은 비트 연산을 할 수 없습니다. 아래는 8bit( 1Byte )공간에 10진수로는 89, 16진수로는 0x59가 저장되어 있는 모양입니다. 128 64 32 16 8 4 2 1 0 1 0 1 1 0 0 1 64 + 16 + 8 + 1 = 89 입니다. ※비트 연산자 표 연산자 피연산자 개수 설명 ~ (NOT) 1개, 단항 비트를 반전 시킨다. & (AND) 2개, 이항 두 개의 비트가 모두 1일 때 1 | (OR) 2개, 이항 두 개의 비트 중 1개만 .. 더보기
[C언어] 난수 생성 함수 rand, srand 사용법 및 중복 없는 난수 생성 ※요약 rand : 예측할 수 없는 하나의 난수를 생성한다. 난수의 범위는 0~RAND_MAX 까지이며 RAND_MAX는 0x7fff이므로 , 결국 난수의 범위는 0~32767 이다. srand : rand 함수만으로 생성되는 난수는 일정한데 srand를 이용, 시간 값을 매개로 초기화하면 일정하지 않고 불규칙적인 난수가 생성된다. ※함수 원형 및 설명 int rand( void ); void srand( unsigned int seed ); ※사용법 ( 사용법 부분은 "C언어를 배우자" 카페의 라이터님의 게시물을 허락 후 옮겼습니다. ) 1. 기본 사용법 i = rand()%n 이것은 0 ~ n-1 범위의 난수를 i에 대입합니다. 예를 들어 n=6 이라 하면 0, 1, 2, 3, 4, 5, 중 하나가 .. 더보기
[C언어] 콘솔 창에서 컬러 텍스트 출력 콘솔창은 형형색색으로 꾸며도 정말 촌스럽네요. ※소스 코드 #include #include #define RED (FOREGROUND_RED | FOREGROUND_INTENSITY) #define BLUE (FOREGROUND_BLUE | FOREGROUND_INTENSITY) #define PINK (RED | BLUE) #define WHITE (RED | GREEN | BLUE) #define GREEN (FOREGROUND_GREEN | FOREGROUND_INTENSITY) #define YELLOW (RED | GREEN) #define SKYBLUE (GREEN | BLUE) #define RED_BG (BACKGROUND_RED | BACKGROUND_INTENSITY) #define B.. 더보기
memset 함수 사용시 주의사항 출처 : 잡동사니님 블로그 - 1Bytes 변수( char, unsigned char 등 )를 제외한 변수를 초기화 할 때는 0 이외의 값으로 초기화를 하면 안됨- new, malloc 등을 이용하여 동적으로 배열을 생성하는 변수가 있는 struct, class에서는 memset으로 초기화를 하면 안됨- CString은 절대 memset으로 초기화를 하면 안됨- virtual function을 가지고 있는 struct, class에서는 절대 memset으로 초기화를 하면 안됨 memset을 사용할 때 위 4가지 경우만 기억을 하고 있으면 문제없이 동작합니다. 각각에 대해서 간단하게 살펴보도록 하죠 -1Bytes 변수( char, unsigned char 등 )를 제외한 변수를 초기화 할 때는 0 이외의 .. 더보기
[C언어] 라인 단위 파일 쓰기 함수 - fputs ※요약fputs : 개방된 파일에 문자열을 라인 단위로 씁니다. ※특징개행 문자 '\n'을 자동으로 0x0D, 0x0A 값으로 변환한다. ※함수 원형 및 설명 int fputs( const char *string, FILE *stream ); //string : 파일에 쓸 NULL로 끝나는 문자열 버퍼의 포인터 //stream : 개방된 FILE 구조체의 포인터 //반환값 : 설공 시 0이나 양수, 실패 시 EOF(-1) ※예제 #include int main( ) { FILE *pFile = NULL; pFile = fopen( "d:\\Text.txt", "w+" ); if( pFile != NULL ) { for( int i=0 ; i 더보기
[C언어] 라인 단위 파일 읽기 함수 - fgets ※요약 fgets : 개방된 파일에서 텍스트 문자열을 한 줄씩 읽습니다. ※특징 - 파일 끝이나 개행 문자까지 읽는다. - 라인 끝(CR/LF)을 읽으면 개행 문자 '\n'으로 변환한다. - string 끝에 NULL문자를 추가한다. ※함수 원형 및 설명 char *fgets( char *string, int n, FILE *stream ); //string : 파일 데이터를 읽어서 저장할 버퍼의 포인터 //n : 읽을 최대 문자의 수 +1, 읽은 문자열의 끝에 NULL이 추가 //stream : 개방된 FILE 구조체의 포인터 //반환값 : 읽은 string의 포인터, 더 읽을 파일이 없거나 에러 시 NULL 포인터 ※예제 #include int main( ) { FILE *pFile = NULL; p.. 더보기
[C언어] 파일 열고 닫기 - fopen, fclose ※요약fopen : 파일에 대한 입력 및 출력을 합니다.fclose : fopen함수로 개방한 파일을 닫습니다. ※함수 원형 및 설명 FILE *fopen( const char *filename, const char *mode ); //filename : 개방할 파일의 경로 및 파일명 //mode : 파일 접근 권한(읽기 전용, 쓰기 전용 등 아래 표 참고) //반환값 : 개방된 파일의 FILE 구조체 포인터, 실패시 NULL포인터 int fclose( FILE *stream ); //stream : 개방된 FILE 구조체의 포인터 //반환값 : 성공 시 0, 실패 시 -1(EOF) ※모드 설명 모드 설명 r 읽기만 가능하며 파일이 존재해야 한다.존재하지 않을 경우 에러가 리턴된다. w 쓰기만 가능하며 .. 더보기
[C언어] 공백, 개행, 탭 문자 검사 - isspace ※요약isspace : 문자가 공백이나 개행, 탭인지 조사하는 함수 ※함수 원형 및 설명 int isspace( int c ); //c : 검사할 문자 또는 아스키 값 //반환값 : 문자가 공백이나 개행, 탭 문자이면 true, 아니면 false ※예제#include #include 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( strTe.. 더보기
[C언어] 선증가 ++i 와 후증가 i++ 의 속도 차이 x = i++; 선증가가 아닌 위와 같이 후증가로 코드를 작성하면 증가 함수가 i의 원래 값에 복사본을 만든 뒤 i를 증가시키고 원래의 값을 반환,임시 객체의 생성을 야기시켜 속도가 느려진다고 한다. 요즘엔 컴파일러 최적화가 잘 되어 있어 ++i, i++이나 속도 차이가 없다고 한다. 더보기
[C언어] 문자가 숫자나 알파벳인지 검사하는 함수 - isalnum ※요약 isalnum : 문자가 숫자 0~9나 대문자 A~Z, 소문자 a~z에 속하는지 검사합니다. ※함수 원형 및 설명 int isalnum( int c ); //c : 검사할 문자 또는 아스키 값 //반환값 : 문자가 숫자 0~9나 대문자 A~Z, 소문자 a~z에 속하면 true, 아니면 false ※예제 #include #include 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" : "Fa.. 더보기
[C언어] 문자가 알파벳인지 검사하는 함수 - isupper, islower, isalpha ※요약 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 #include.. 더보기
[C언어] 문자가 숫자에 속하는지 검사하는 함수 - isdigit ※요약 isdigit : 문자가 숫자 0~9 사이에 속하는지 검사하는 함수 ※함수 원형 및 설명int isdigit( int c ); //c : 검사할 문자 또는 아스키 값 //반환값 : 문자가 0~9 사이에 속하면 true, 아니면 false ※예제#include #include 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].. 더보기
[C언어] 숫자를 문자열로 변환 - itoa, ltoa, ultoa, fcvt, ecvt, gcvt 숫자를 문자열로 바꾸는 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 ).. 더보기
[C언어] 각 데이터형 범위 C언어 각 데이터형 범위 입니다.출처는 MSDN입니다. Type NameBytesOther NamesRange of Valuesint4signed–2,147,483,648 to 2,147,483,647unsigned int4unsigned0 to 4,294,967,295__int81char–128 to 127unsigned __int81unsigned char0 to 255__int162short, short int, signed short int–32,768 to 32,767unsigned __int162unsigned short, unsigned short int0 to 65,535__int324signed, signed int, int–2,147,483,648 to 2,147,483,647unsig.. 더보기
[C언어] 문자열 숫자로 변환 관련 함수 - strtol, strtoul, strtod 문자열을 숫자로 변환하는 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 .. 더보기
[C언어] 문자열 숫자로 변환 관련 함수 - atoi, _atoi64, atol, atof 문자열을 숫자로 변환하는 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로 종결되는 수식을 포함하는 문자열의 포인터 //반.. 더보기
[C언어] 문자열 초기화 관련 함수 - strset, strnset 문자열을 초기화하는 strset함수와 strnset함수에 관한 내용입니다. ※요약 strset : 문자열을 특정 문자 또는 ASCII값으로 초기화 합니다. strnset : 문자열을 일정 길이만큼 초기화 합니다. ※함수 원형 및 설명 ※예제 -strset, strnset#include #include //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 ); p.. 더보기
[C언어] 문자열 거꾸로 뒤집는 함수 - strrev 문자열을 거꾸로 뒤집는 strrev함수에 관한 내용입니다. rev는 reverse의 약자인듯 싶네요. ※요약 strrev : 문자열을 거꾸로 뒤집습니다. ※함수 원형 및 설명 ※예제 -strrev#include #include //strrev int main( ) { char string[] = "This is simple code"; char *pstr; pstr = strrev( string ); printf( "%s\n", pstr ); printf( "%s\n", string ); return 0; } 더보기
[C언어] 문자열 대소문자 변환 관련 함수 - strupr, strlwr 문자열 대소문자 변환 관련 함수 중 strupr함수와 strlwr함수에 관한 내용입니다. ※요약 strupr : 문자열을 대문자로 변환 합니다. strlwr : 문자열을 소문자로 변환 합니다. ※함수 원형 및 설명 ※예제 -strupr, strlwr#include #include //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(.. 더보기
[C언어] 문자셋 검색 관련 함수 - strspn, strcspn 문자셋 검색하는 함수 중 strspn함수와 strcspn함수에 관한 내용입니다. 단일 문자 또는 ASCII코드 값의 검색은 문자 검색 관련 함수 - strchr, strrchr을 참고하세요. ※요약 strspn : 문자열에서 일치되지 않는 첫 번째 문자의 위치를 검색합니다.(대소문자 구분) strcspn : 문자열에서 일치되는 첫 번째 문자의 위치를 검색합니다.(대소문자 구분) ※함수 원형 및 설명 ※예제 -strspn, strcspn#include #include //strspn, strcspn int main( ) { char string[] = "a1b2c3 A1B2C3"; char strCharset[] = "12ab"; int nIndex=0; //문자열에서 '1', '2', 'a', 'b' 문.. 더보기
[C언어] 문자열 길이, 버퍼 크기 관련 함수 - strlen, sizeof 문자열 길이 및 버퍼 크기 구하는 함수 중 strlen함수와 sizeof연산자에 관한 내용입니다. ※요약strlen : 문자열의 길이를 구합니다.sizeof : sizeof는 실제로 차지하고 있는 메모리의 크기를 구합니다. ※함수 원형 및 설명 ※예제-strlen, sizeof#include //printf #include //cout #include //strlen #define print(nLen) printf( "%d\n", nLen ) #define PrintOut(nLen) std::cout 더보기
[C언어] 문자열 분리 및 파싱 관련 함수 - strtok, strpbrk 문자열 분리 및 파싱 관련 함수 중 strtok함수와 strpbrk함수에 관한 내용입니다. ※요약 strtok : 문자열을 특정 구분기호로 분리하고자 할 때 사용합니다. 문자열에서 문자세트 중 하나가 발견되면 해당 문자를 NULL로 바꾸고 토큰(분리 문자열)을 반환합니다. strpbrk : 문자열에서 특정 문자의 위치를 검색하며 대소문자를 구분합니다. ※함수 원형 및 설명 ※예제 -strtok#include //printf #include //strtok int main( ) { char *token = NULL; char str1[] = "This is\tTest,Program!\n"; char str2[] = " ,\t\n";//' '이나 ','이나 '\t'이나 '\n'이 들어있는 문자열을 분리 to.. 더보기
[C언어] 문자 검색 관련 함수 - strchr, strrchr 문자 검색 관련 함수 중 strchr함수와 strrchr함수에 관한 내용입니다.문자셋을 이용한 값의 검색은 문자셋 검색 관련 함수 - strspn, strcspn을 참고하세요. ※요약strchr : 문자열의 앞에서 뒤로, 일치되는 문자가 있는지 검색합니다.strrchr : 문자열의 뒤에서 앞으로, 일치되는 문자가 있는지 검색합니다. 사이의 r은 Reverse입니다. ※함수 원형 및 설명 ※예제-strchr, strrchr#include #include int main( ) { char *strTemp; char string[] = "This is a good car!"; strTemp = strchr( string, 'a' ); printf( "%s \n", strTemp ); strTemp = strc.. 더보기
[C언어] 문자열 검색 관련 함수 - strstr 문자열 검색 관련 함수 중 strstr함수에 관한 내용입니다. ※요약strstr : 대소문자를 구분하여 일치되는 문자열이 있는지 검색합니다. ※함수 원형 및 설명 ※예제simple 문자열을 검색 후, 검색된 문자열 포인터로 부터 6글자를 바꾸는 예제#include #include int main( ) { char str[] ="This is a simple string"; char * pch; pch = strstr( str, "simple" ); strncpy( pch, "sample", 6 ); puts( str ); return 0; } 더보기
[C언어] 문자열 비교 관련 함수 - strcmp, strncmp, stricmp, strnicmp 문자열 비교 관련 함수 중 strcmp함수와 strncmp함수, stricmp함수, strnicmp함수에 관한 내용입니다. ※요약strcmp : 대소문자를 구분하여 두 개의 문자열을 비교합니다.strncmp : 대소문자를 구분하여 지정된 길이만큼 두 개의 문자열을 비교합니다.stricmp : 대소문자를 구분하지 않고 두 개의 문자열을 비교합니다.strnicmp : 대소문자를 구분하지 않고 지정된 길이만큼 두 개의 문자열을 비교합니다. ※함수 원형 및 설명 ※예제-strcmp, strncmp, stricmp, strnicmp #include #include char *CompareResult( int nResult ) { switch(nResult) { case 0: return "두 문자열이 같습니다.".. 더보기
[C언어] 문자열 연결 관련 함수 - strcat, strncat 문자열 연결 관련 함수 중 strcat함수와 strncat함수에 관한 내용입니다. ※요약 strcat : 두 개의 문자열을 연결합니다. strncat : 두 개의 문자열을 지정된 길이만큼 연결합니다. ※함수 원형 및 설명 ※예제 -strcat #include #include int main( ) { char str[80]; strcpy( str, "these " ); strcat( str, "strings " ); strcat( str, "are " ); strcat( str, "concatenated." ); puts( str ); return 0; } -strncat #include #include int main( ) { char str1[20]; char str2[20]; strcpy( str1,.. 더보기
[C언어] 문자열 복사 관련 함수 - strcpy, strncpy 문자열 복사 관련 함수 중 함수와 strncpy함수에 관한 내용입니다. ※요약strcpy : NULL문자를 만나기 전까지의 문자열을 복사합니다.strncpy : 문자열을 지정된 길이만큼 복사합니다. str과 cpy 사이에 있는 n(number)은 길이를 의미합니다. ※함수 원형 및 설명 ※예제-strcpy#include #include int main( ) { char str1[]="Sample string"; char str2[40]; char str3[40]; strcpy( str2, str1 ); strcpy( str3, "copy successful" ); printf( "str1: %s\n", str1 ); printf( "str2: %s\n", str2 ); printf( "str3: %s\n.. 더보기