Visual Studio/C 기초
-
C언어 시간 처리 함수Visual Studio/C 기초 2013. 9. 1. 19:11
C언어에서 현재 시간을 확인하는 방법이 있는데요, 바로 time()함수를 사용하는 것입니다. time_t time(time_t *timeptr); 여기서 time_t형은 long형과 같은 성격을 지니고 있고 time.h에 포함되어 있습니다. time() 함수는 1970년 1월 1일 자정 이후에 경과된 초(sec)의 값을 돌려줍니다. 함수에 NULL 포인터가 아닌 다른 어떤 값을 전달하면 time()은 timeptr이 가리키는 time_t형 변수에 이 값을 저장하게 됩니다. 그래서 현재 시간을 time_t형 변수 now에 저장하기 위해 time_t now; now = time(0); 이렇게 작성할 수 있습니다. 그런데 1970년 1월 1일 이후에 경과된 초의 값으로 표현되는 시간 좀 불편한 감이 있는데요,..
-
C언어 strftime() 변환 문자 표Visual Studio/C 기초 2013. 9. 1. 17:31
strftime()에서 사용될 수 있는 변환 문자 표입니다. 참고해주세요 (내용 겁나많네요..) 문자 내용 %a 생략형 요일 이름 %A 완전한 요일 이름 %b 생략형 월별 이름 %B 완전한 월별 이름 %c 날짜와 시간 출력 ex)12:34:56, 30-Feb-91 %d 10진수 01-31을 사용한 1개월 내의 일 %H 10진수 00-23을 사용한 1일 내의 시 (24시간 제 표기) %I 10진수 00-11을 사용한 1일 내의 시 (12시간 제 표기) %j 10진수 001-366을 사용한 1년 내의 일 %m 10진수 00-12를 사용한 1년 내의 월 %M 10진수 00-59를 사용한 1시간 내의 분 %p AM이나 PM %S 10진수 00-59를 사용한 1분 내의 초 %U 10진수 00-53을 사용한 1년 ..
-
C언어 가변적인 함수 va_list, va_start(), va_arg(), va_end()Visual Studio/C 기초 2013. 8. 19. 16:53
여태 포스팅 했던 내용에서 printf()나 scanf()와 같이 가변적인 개수의 인수를 받아들이는 여러 가지 라이브러리 함수를 사용했는데요, 가변적인 개수의 인수를 받아들이는 자신만의 함수를 작성할 수도 있는데 이렇게 가변적인 개수의 인수를 받아들이는 함수를 사용하는 프로그램에는 헤더 파일 stdarg.h를 포함시켜야 합니다. 가변적인 개수의 인수를 받아들이는 함수를 선언할 때에는 우선 항상 사용되는 매개변수를 나열해야 하는데 최소한 고정된 매개변수가 있어야 합니다. 그리고 함수에 추가로 인수를 전달할 수 있다는 것을 표시하기 위해 매개변수의 목록에서 마지막 부분에 말줄임표를 포함시킵니다. 함수는 변수의 목록을 통해 각 인수의 형태를 알아야 합니다. printf()의 경우에는 변호나 문자가 각 인수의 ..
-
C언어 void형 포인터Visual Studio/C 기초 2013. 8. 17. 17:10
void형 포인터는 함수의 매개변수를 선언하는 경우에 가장 많이 사용됩니다. 가끔 여러가지 형태의 인수를 받아들일 수 있는 함수를 만들 필요가 있을 것이고, 어떤 경우에는 함수에 int형을 전달하고 다른 어떤 경우에는 float형을 전달할 수 있습니다. 함수가 void형 포인터를 인수로 받아들이도록 선언하면 한 가지 데이터 형만을 받아들이도록 제한되지 않습니다. void pnt(void *x); 이렇게 선언을 하면 어떤 형태의 포인터도 인수로 전달하여 함수를 호출할 수 있습니다. 하지만 어떤 형태의 데이터를 가리킬지 모르는 상태에서 void형의 포인터를 전달할 수 있지만 포인터가 가리키는 변수의 값을 사용할 수는 없습니다. 그래서 형변환이 필요합니다. (type *)x; 여기서 type은 상황에 맞는 데..
-
C언어 참조에 의한 전달Visual Studio/C 기초 2013. 7. 4. 23:58
일단, 참조에 의한 전달이라는 말의 뜻이 생소한 분들이 있을텐데요, 보통 함수에 인수를 전달하는 기본적인 방법은 "값에 의한 전달" 입니다. 우리가 short, int, long, float 등등 변수를 선언하고 변수의 값을 선언하여 printf로 호출하는 걸 값에 의한 전달이라고 합니다. 그렇다면 참조에 의한 전달이란 무엇일까요? 변수 자체의 값을 전달하는 것이 아니라 인수로 사용되는 변수에 대한 포인터를 전달하는 것입니다. 프로그램에서 큰 구조체를 사용한다면 값에 의한 전달로 배열을 전달하는 것은 불가능합니다. 이유는 스택 영역이 부족하게 되기 때문입니다. 참조에 의한 전달이 함수에 배열을 전달하는 유일한 방법입니다. 예제를 들겠습니다. #include void value(int x, int y, i..
-
strlwr() strupr()Visual Studio/C 기초 2013. 7. 4. 23:39
strlwr()함수와 strupr()함수는 문자의 크기를 변경하는 함수입니다. ANSI 표준이 아니라 어떤 컴파일러에선 지원하지 않을 수 있습니다. visual studio에선 지원하는군요. 예제로 대소문자 변환하는 프로그램을 들 텐데요, 사실 대소문자를 변환하는 방법은 여러가지가 있으나 함수 하나로 한 방에 변환하는 방법이 있습니다. 바로 strlwr()함수와 strupr()함수이죠. #include #include main(){ char str[80]; while(1) { printf("문자열을 입력해주세요. 공백을 입력하면 종료됩니다 : "); gets(str); if(strlen(str)==0) break; puts(strlwr(str)); puts(strupr(str)); } }
-
strstr()Visual Studio/C 기초 2013. 7. 4. 22:44
strstr()함수는 strcspn() 함수와 비슷한 함수입니다. 어떤 문자열 내에서 한 문자열이 처음으로 나타나는 위치를 찾고 문자열 내에서 개별적인 문자들이 아니라 전체 문자열을 찾습니다. #include #include main(){ char *lo, name1[80], name2[80]; printf("검색할 원본 문자열을 입력하세요 : "); gets(name1); printf("찾을 단어를 입력해주세요 : "); gets(name2); lo=strstr(name1,name2); if(lo==NULL) printf("검색하는 데 실패하였습니다.\n"); else printf("단어 %s는 위치 %d에서 발견되었습니다.\n",name2,lo-name1); } strstr()함수는 name1에서 처..
-
C언어 문자열 비교 strspn()Visual Studio/C 기초 2013. 7. 3. 00:10
strspn() 함수는 전 포스팅에서 다뤘던 strcspn() 함수와 비슷합니다. strcspn() 함수는 strspn() 함수와 정 반대의 성격입니다. strcspn()함수는 찾고자 하는 단어를 문자열에서 검색할 때 처음으로 나타나는 위치를 돌려주지만, strspn() 함수는 찾고자 하는 단어를 문자열에서 검색할 때 처음으로 일치하지 않는 위치를 돌려줍니다. 아무런 문자도 일치하지 않으면 0값을 돌려줍니다. #include #include main(){ char name1[80], name2[80]; size_t location; puts("첫번째 문자열을 입력해주세요."); gets(name1); puts("두번째 문자열을 입력해주세요."); gets(name2); location = strspn(n..