'Programming/C'에 해당되는 글 62건

  1. 2013.02.15 printf 함수의 서식문자 조합.
  2. 2013.02.15 isalpha 함수
  3. 2013.02.15 isdigit함수
  4. 2013.02.15 do~while문
  5. 2013.02.15 switch문의 적절한 예
  6. 2013.02.15 가변 인자 함수
  7. 2013.02.15 수학 관련 함수
  8. 2013.02.15 ftell 함수와 rewind 함수

% # 7 .5 h d

         a     b        c      d


a = 출력의 형태에 조절을 가하기 위한 특별한 표시문자(flag)

b = 출력의 사용되는 최소한의 폭.

c = 정밀도(precision)

d = 출력 데이터의 크기정보 변경.


a : 총 5개가 있다. -, 0, + 공백, #

: -        좌측정렬.

: 0        빈 공간을 0으로 채우기

: +        출력할 수의 크기가 0보다 클 때 +기호 붙여주기

: 공백    출력할 수의 크기가 0보다 클 때 앞의 빈 칸 하나 출력.

: #        8진수, 16진수 출력 시 각각 0과 0x를, 실수의 경우 소수점 이하 0출력.


b : 폭(width)


: %5d 이렇게 하면 5칸의 공간을 할당하여 오른쪽 정렬된 결과를 출력한다.



c : 정밀도


: 정밀도는 출력되어야 하는 문자의 개수를 의미한다.

만약에 문자열의 길이가 서식문자의 정밀도보다 길다면, 정밀도의 크기에 맞춰서 문자열의 일부만 출력이 된다.



d : 출력 데이터의 크기정보 변경


ex) %ld, %lld, %lf



'Programming > C' 카테고리의 다른 글

Bit Mask (비트 마스크)  (0) 2013.02.15
비트 쉬프트 연산자  (0) 2013.02.15
isalpha 함수  (0) 2013.02.15
isdigit함수  (0) 2013.02.15
do~while문  (0) 2013.02.15
Posted by scii
:

isalpha 함수

Programming/C 2013. 2. 15. 02:19 |

isalpha 함수


: 인자로 전달되는 문자가 알파벳이라면 0이 아닌 값을, 알파벳이 아니라면 0을 반환한다.

이 함수도 호출을 위해 헤더파일 ctype.h를 포함해야 한다.





위의 함수와 똑같은 기능을 하는 함수를 만들어 보았다.




아니면

if((ch >= 'a'  && ch <= 'z') || (ch >= 'A' && ch <= 'Z'));

            return 1;

else

            return 0;

'Programming > C' 카테고리의 다른 글

비트 쉬프트 연산자  (0) 2013.02.15
printf 함수의 서식문자 조합.  (0) 2013.02.15
isdigit함수  (0) 2013.02.15
do~while문  (0) 2013.02.15
switch문의 적절한 예  (0) 2013.02.15
Posted by scii
:

isdigit함수

Programming/C 2013. 2. 15. 02:18 |

isdigit 함수


:숫자인지를 묻는 함수이다. 인자로 전달되는 문자가 한자릿수 숫자라면(숫자에 해당하는 문자라면) 0이 아닌 값을,

숫자가 아니라면 0을 반환한다.




isdigit 함수는 숫자에 해당하는 문자인 경우 0이 아닌 값을 반환한다. 그런데 0 이외에 값은 '참'으로 인식되기 때문에, 이 if문이 성립.




위에 함수 기능을 만들어 보았다.





문자는 정수형으로 치환되고 4바이트를 가지고 있기 때문에 int형으로 인자를 받는 것.


'Programming > C' 카테고리의 다른 글

printf 함수의 서식문자 조합.  (0) 2013.02.15
isalpha 함수  (0) 2013.02.15
do~while문  (0) 2013.02.15
switch문의 적절한 예  (0) 2013.02.15
가변 인자 함수  (0) 2013.02.15
Posted by scii
:

do~while문

Programming/C 2013. 2. 15. 02:15 |

do ~ while 문의 대표적인 활용사례.




조건검사를 뒷 부분에서 하는 것이 합리적인 상황을 연출하고 있다.


지금은 do~while문이 좋지만,  만약에 while문이나 for문으로 처리할 수 있는 것이라면 do~while문 보다 while이나 for문이 낫다.

'Programming > C' 카테고리의 다른 글

isalpha 함수  (0) 2013.02.15
isdigit함수  (0) 2013.02.15
switch문의 적절한 예  (0) 2013.02.15
가변 인자 함수  (0) 2013.02.15
수학 관련 함수  (0) 2013.02.15
Posted by scii
:

숫자를 입력하면 그 범위를 알려주는 프로그램.

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

int Value(int);

int main(void)
{
      int num;

       printf("integer Input: ");
       scanf("%d", &num);

       switch(Value(num))
       {
        case -1 :
             puts("0미만의 수. \n");
             break;
       case 0 :
             puts("입력된 숫자는 0이상 10미만. \n");
             break;
       case 1 :
             puts("입력된 숫자는 10이상 20미만. \n");
             break;
       case 2 :
             puts("입력된 숫자는 20이상 30미만. \n");
             break;
       default :
             puts("30이상의 수. \n");
              break;
      }

      system("pause");
       return 0;
}

int Value(int val)
{
       if(val < 0)      
             return -1;
       else            
             return val/10;
}

적절하구나!! 

'Programming > C' 카테고리의 다른 글

isdigit함수  (0) 2013.02.15
do~while문  (0) 2013.02.15
가변 인자 함수  (0) 2013.02.15
수학 관련 함수  (0) 2013.02.15
ftell 함수와 rewind 함수  (0) 2013.02.15
Posted by scii
:

가변 인자 함수

Programming/C 2013. 2. 15. 02:10 |

가변 인자 함수(variadic function)



 int printf(const char *format, ...);

 int scanf(const char *format, ...);


printf 함수와 scanf함수의 원형를 예를 들어...

위의 원형에서 보면, 두 번째 매게 변수 선언이 "..."로 되어 있다. 이는 몇 개의 인자가 전달되건, 어떤 종류의 인자가 전달되건 개의치 않겠다는 선언이다.


따라서 printf와 scanf 함수의 선언은 첫 번째 인자로 반드시 문자열이 와야 하고(const char *format), 그 다음부터는 몇 개의 인자를 전달하건 상관하지 않겠다는 선언이다.




#include <stdio.h>

#include <stdarg.h> //가변 인자의 모든 함수 및 변수를 사용하기 위해서는 헤더 파일 stdarg.h를 포함해야 한다.


void va_fct(int a, ...);


main()

{

      va_fct(1, 1); //첫 번째 인자는 가변 인자의 갯수 정보를 전달한다.

      va_fct(2, 1, 2);

      va_fct(3, 1, 2, 3);


       return 0;

}


void va_fct(int a, ...)

{

       int i;

       va_list list;     //list 포인터. (va_fct함수 호출 시 전달된 매개 변수를 가리키는 일종의 지시자.)


       va_start(list, a);     //list 포인터 초기화. 

                               //(첫 번째 인자는 초기화할 va_list형 변수를, 두 번째 인자론 매개 변수로 전달된 첫 번째 인자를 전달.)

                             //(이 정보는 변수 list가 가변 인자의 첫 번째 요소를 정확히 가리키게 하기 위한 것.)

                       //※주의할 사항: 변수 list가 가리키는 첫 번째 인자라는 것이 메인함수에 있는 va_fct함수의 두 번째 인자이다.


       for(i=0; i<a; i++)

             printf("%d ", va_arg(list, int));     //va_arg함수를 호출하면서 변수 list를 인자로 전달하고 있다.

                                                          //이는 현재 list가 가리키고 있는 가변 인자를 반환하기 위한 것.

                                                         //두 번째 인자로는 가변 인자의 자료형 정보를 넘겨줘야만 한다.

                                                        //함수 호출이 완료되고 나면 변수 list는 다음 번 가변 인자를 가리키게 된다.

       printf("\n");


       va_end(list);     //list 리셋. (가변 인자를 모두 참조했다면 반드시 거쳐야 하는 과정.)

}


'Programming > C' 카테고리의 다른 글

do~while문  (0) 2013.02.15
switch문의 적절한 예  (0) 2013.02.15
수학 관련 함수  (0) 2013.02.15
ftell 함수와 rewind 함수  (0) 2013.02.15
2차원 배열 동적할당.  (2) 2013.02.15
Posted by scii
:

수학 관련 함수

Programming/C 2013. 2. 15. 02:07 |

수학 관련 함수들은 헤더 파일 math.h에 선언되어 있으므로 반드시 math.h를 포함해야 하며, 각도는 라디안(radian)으로 처리됨을 기억해야 한다.



1.삼각 함수


> 더 보기


 함수의 원형

 함수의 기능


 double sin(double x)

 

 전달 인자의 사인(sine)값 반환.

 double cos(double x)


 전달 인자의 코사인(cosine)값 반환. 

 double tan(double x)


 전달 인자의 탄젠트(tangent)값 반환.

 double asin(double x)


 전달 인자의 아크사인(arcsine)값 반환.

 double acos(double x)


 전달 인자의 아크코사인(arccosine)값 반환.

 double atan(double x)


 전달 인자의 아크탄젠트(arctangent)값 반환.

 double atan2(double x, double y)


 전달 인자의 x/y에 해당하는 아크탄젠트(arctangent)값 반환.






2. 지수 및 로그 함수


> 더 보기



 함수의 원형

 함수의 기능


 double exp(double x)

 

 전달 인자의 지수 값 반환.

 double log(double x)


 전달 인자의 자연 로그 값 반환. 

 double log10(double x)


 전달 인자의 10진 로그 값 반환.






3. 그 이외 자주 사용되는 수학 함수


> 더 보기



 함수의 원형

 함수의 기능


 double sqrt(double x)

 

 전달 인자의 루트(root)값 반환.

 double abs(double x)


 전달 인자의 절대값 반환.

 double pow(double x, double n)


 xⁿ 값 반환.

 double ceil(double x)


 전달 인자보다 작지 않은 가장 작은 정수 값 반환.

 double fabs(double x)


 전달 인자의 절대값 반환.

 double floor(double x)


 전달 인자보다 크지 않은 가장 큰 정수 값 반환.



'Programming > C' 카테고리의 다른 글

switch문의 적절한 예  (0) 2013.02.15
가변 인자 함수  (0) 2013.02.15
ftell 함수와 rewind 함수  (0) 2013.02.15
2차원 배열 동적할당.  (2) 2013.02.15
fprintf와 문자열 형식  (0) 2013.02.15
Posted by scii
:

int cmp_file(FILE* fp1)
{
      printf("position: %d\n", ftell(fp1));       //파일을 열었을 때의 파일 위치 지시자의 위치.
       fseek(fp1, 0, SEEK_END);                   //파일 위치 지시자를 파일의 끝에 가도록한다.
       printf("file Size: %dbyte\n", ftell(fp1)); //ftell함수를 이용해 파일의 크기를 알아본다.
       puts("-------------------");
       printf("position: %d\n", ftell(fp1));       //현재 파일 위치 지시자의 위치를 출력한다.
       fseek(fp1, -5, SEEK_CUR);                 //현재의 위치에서 -5만큼 파일 위치 지시자를 움직인다.
       printf("position: %d\n", ftell(fp1));       //현재 파일 위치 지시자의 위치를 출력한다.
       rewind(fp1);                                      //파일 위치 지시자를 초기화 한다.

       printf("position: %d\n", ftell(fp1));       //현재 파일 위치 지시자의 위치를 출력한다.
}



#include <stdio.h>
long ftell(FILE* stream) 함수

: 파일 위치 지시자의 현재 위치를 알려주는 함수이다.
파일을 처음 열면 파일 포인터는 파일의 첫 위치를 가리킨다. 따라서 ftell() 함수는 0을 리턴하게 된다.

만약 1바이트를 읽으면 파일 포인터(파일 위치 지시자)는 1의 위치로 가게 된다.
파일 포인터는 다음 읽을 위치를 항상 가리키게 되어 있다. 파일에서 데이터를 읽으면, 읽 난 바로 뒤를 가리킨다.
그리고 fseek()함수를 사용하면 파일 포인터를 옮길 수 있다.

이렇게 파일 포인터가 어디를 가리키고 있으냐를 바이트 단위로 알려주는 함수가 ftell() 함수 이다.

ftell()함수가 주로 사용되는 경우는 파일의 크기를 얻고자 할 때이다.
파일을 열고 fseek() 함수로 파일 포인터를 파일의 끝으로 이동시킨 후, ftell() 함수를 호출하면 
파일의 크기를 "바이트 단위"로 얻을 수 있다.



#include <stdio.h>
void rewind(FILE* stream) 함수

:파일 위치 지시자를 맨 처음으로 설정해준다.(초기화)
fseek(stream, 0, SEEK_SET); 과 정확히 동일하다. 단, fseek함수와는 달리 rewind 함수는 오류 지정자를 초기화 한다.

따라서 스트림이 읽기 및 쓰기 형식으로 열려있을 경우, rewind 함수를 호출함으로써 읽기에서 쓰기 모드로,
쓰기에서 읽기 모드로 변경할 수 있다.

'Programming > C' 카테고리의 다른 글

가변 인자 함수  (0) 2013.02.15
수학 관련 함수  (0) 2013.02.15
2차원 배열 동적할당.  (2) 2013.02.15
fprintf와 문자열 형식  (0) 2013.02.15
조건부 컴파일  (0) 2013.02.15
Posted by scii
: