Develop
2013.04.23 15:47
[c] 가변인자 함수(printf와 같은..)
조회 수 8415 댓글 0
함수 정의시 printf처럼 변수의 갯수가 일정하지 않을 때 사용하는 방법인 가변인자 함수 정의 방법을 알아본다.
간단하게 가변인자 만드는 샘플 몇개 소개!
1. 초간단 가변인자 함수
#include <stdarg.h>
int sum(int nargs, ...)
{
va_list argptr;
int i, total = 0;
va_start(argptr, nargs);
for (i = 0; i < nargs; i++)
total += va_arg(argptr, int);
va_end(argptr);
return total;
}2. 초간단 변형된 printf 함수
int my_printf(const char *fmt, ...)
{
va_list argptr;
int ret;
va_start(argptr, fmt);
ret = vprintf(fmt, argptr);
va_end(argptr);
return ret;
}3. 향상된 Error 처리 함수
void error(int status, int ecode, const char *fmt, ...)
{
va_list argptr;
fflush(stdout);
fprintf(stderr, "error: ");
if (ecode)
fprintf(stderr, "%s: ", strerror(ecode));
va_start(argptr, fmt);
vfprintf(stderr, fmt, argptr);
va_end(argptr);
fputc('\n', stderr);
fflush(stderr); /* redundant */
if (status)
exit(status);
}이건.. 예제..
#include <stdio.h>
#include <stdarg.h>
int add(int count, ...){
va_list list;
int sum = 0;
int i;
va_start(list, count);
for(i=0; i<count; i++)
sum += va_arg(list, int);
va_end(list);
return sum;
}
int main(){
int sum;
sum = add(2, 284, 945);
printf("%d\n", sum);
sum = add(5, 456, 74, 24, 826, 34);
printf("%d\n", sum);
return 0;
}
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|---|
| » | Develop | [c] 가변인자 함수(printf와 같은..) | hooni | 2013.04.23 | 8415 |
| 540 | Develop |
[c#] BHO 한샘툴바랑 동현툴바..
|
hooni | 2013.04.23 | 2208 |
| 539 | Develop | [c++] Win32API를 이용한 ExitWindowsEx 사용한 예제코드 | hooni | 2013.04.23 | 9313 |
| 538 | Develop |
[c#] mfc 기반의 웹서비스 서버/클라이언트 샘플과 예제 소스
|
hooni | 2013.04.23 | 2073 |
| 537 | Develop |
[c] 텍스트 파일(로그)을 정해진 라인 단위로 쪼개주는 코드
|
hooni | 2013.04.23 | 8725 |
| 536 | Develop |
[c] 네트워크 트래릭 모니터링.. 졸업작품..
2 |
hooni | 2013.04.23 | 13402 |
| 535 | Develop |
[c#] MS IE(Internet Explorer) 툴바 버튼 예제 2003/2005 두가지 버전
|
hooni | 2013.04.23 | 2090 |
| 534 | Develop |
[c#] BFilter 툴바 소스 코드 ㅎㅎ
|
hooni | 2013.04.23 | 8745 |
| 533 | Develop |
[c++] mfc로 만든 현재 디렉토리 읽어오기/세팅하기 (GetCurrentDirectory/SetCurrentDirectory)
|
hooni | 2013.04.23 | 9493 |
| 532 | Develop | 다운 받아서 테스트 해볼것.. | hooni | 2013.04.23 | 10291 |
| 531 | Develop |
[c++] mfc 기반 멀티수납(wall)시스템 소스와 실행파일
|
hooni | 2013.04.23 | 8396 |
| 530 | Develop | [c++] mfc 기반 레지스트리(registry) 컨트롤 예제 코드 2 | hooni | 2013.04.23 | 17190 |