strcpy함수는 문자열을 복사하는 경우에 사용된다.


#include<stdio.h>
#include<string.h>

main()
{
       char str1[20] = "We are the world!!";
       char str2[20];

 

       printf("Original String: %s\n", str1);

 

       strcpy(str2, str1); //str1에 있는 문자열을 str2에 복사한다.
       printf("New String: %s\n", str2);

 

       return 0;

}

 

----------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------

 

#include<stdio.h>
#include<string.h>

main()
{
       char str1[20] = "We are the world!!";
       char str2[10];

 

       printf("Original String: %s\n", str1);

 

       strncpy(str2, str1, sizeof(str2)-1); //str1에 있는 문자열을 9개의 문자만 str2에 복사한다.
       str2[sizeof(str2)-1] = '\0';          //str2의 마지막 인덱스인 인덱스9의 배열에 널문자를 추가한다.
                                            //왜냐하면, 문자열은 끝에 무조건 Null이 있어야하기 때문이다.
                                            //널문자가 없으면 어디가 끝인지몰라 이상한 결과값이 나온다.
       printf("New String: %s\n", str2);

 

       return 0;
}

Posted by scii
:

&  = &특수문자는 주소값을 나타내 준다.  &a 이렇게 붙이면 변수 a의 주소값을 나타내준다.

 

#include<stdio.h>

 

main()
{
         int val; //main함수의 지역변수 val

 

         scanf("%d", &val); //scanf함수는 지역변수 val에 접근해서 값을 대입함.

 

         return 0;
}

 

# main함수 내에서 int a를 선언해 놓고 아무곳이나 가서 a = 5 이렇게 선언해서 a를 초기화 시킬 수 있다.

 

이것이 가능한 것은 main함수 내에서 존재하는 변수이기 때문이다.

 

하지만, scanf함수는 main함수와는 별개다. scanf 함수는 인자로 main함수 내에 존재하는 지역변수를

 

인자로 전달한다.

 

그런데.. 여기서 scanf함수는 main함수와는 별개이기 때문에 main함수내에 존재하는 변수의 위치를 모른다.

 

그렇기 때문에 main의 지역함수 앞에 &를 붙여서 주소를 알려주는 것이다.

 

우리집은 여기다. 이러면 어느 누가 우리집을 알까.? 주소를 알려주는 것이다. 주소를 보고 찾아오라고~

 

Call - By - Reference

 

 

------------------------------------------------------------------------------------------------------

 

 

#include<stdio.h>

 

main()
{
         char arr[100]; //main함수의 지역변수) 문자형 데이타를 100개 저장할 수있는 arr배열

 

         scanf("%d", arr); //scanf함수는 지역변수) arr에 접근해서 값을 대입함.

 

         return 0;
}

 

# 음... 배열은 scanf함수에 &를 안붙인다. 왜냐면 배열의 이름은 주소를 지니고 있기 때문이다.

 

그래서 &를 붙일 필요가 없다.

Posted by scii
:

******8진수 = 2진수를 낮은 비트부터 3개씩 끊으면 된다.******

ex)11010010 (10진수로 210이다) -> 11 010 010

이것을 계산해보면 3 2 2 다

#include<stdio.h>
main()
{
       int a;
       a = 210;

       printf("%o \n",a);

       return 0;

} //출력해보면 322가 나옴.

 

******16진수 = 2진수를 낮은 비트부터 4개씩 끊으면 된다.******

ex)11010010 (10진수로 210이다) -> 1101 0010

이것을 계산해보면 D 2 다

#include<stdio.h>
main()
{
       int a;

       a = 210;

       printf("%X \n",a);

       return 0;

} //출력해보면 D2가 나옴.

 

******8진수를 16진수로 만들기******

 

8진수로 67이 있다. 이것을 2진수로 푼다.

2진수로 110 111 이다.

여기서 16진수로 만드려면 위와같이 낮은부터인 오른쪽에서부터 4자리씩 끊는다.

그러면 0011 0111이다.

계산해보면 37이 나온다.

#include<stdio.h>
main()
{
       int a;

       a = 067; //8진수 67

       printf("%x \n",a); //8진수 67을 16진수로 표현해서 출력

       return 0;

}

 

******8진수를 10진수로 만들기******

 

8진수로 67이 있다. 이것을 2진수로 푼다

2진수로 110 111 이다.

이것을 2진법으로 계산한다.

1+2+4+16+32 = 55

10진수로 55다

 

 

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

문자열을 복사하는 strcpy, strncpy함수  (0) 2013.02.15
scanf함수에 &를 붙이는 이유  (0) 2013.02.15
2진수 음수 계산법  (0) 2013.02.15
파일의 분할.  (0) 2013.02.14
가변인자 함수  (0) 2013.02.14
Posted by scii
:

만약 00010110 (10진수로는 22)  란 2진수가 있다

 

이것을 계산 하려면

 

일단 1의보수를 취한다.

10010110   0은 1으로 1은 0으로

01101001   

이 상태에서 +1을 더한다.

01101010

 

10010110 은 -106이다.

 

음수를 표현하는 맨앞의 비트를 MSB라 한다. Most Significant Bit (가장 중요한 비트)

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

문자열을 복사하는 strcpy, strncpy함수  (0) 2013.02.15
scanf함수에 &를 붙이는 이유  (0) 2013.02.15
2진수를 8진수로 16진수로, 8진수를 16진수로  (0) 2013.02.15
파일의 분할.  (0) 2013.02.14
가변인자 함수  (0) 2013.02.14
Posted by scii
:

파일의 분할.

Programming/C 2013. 2. 14. 18:26 |

 

 

● 헤더파일의 의미와 정의 방법.

● 헤더파일에 삽입할 내용과 소스파일에 삽입할 내용을 구분하는 방법.

● 둘 이상의 헤더파일과 소스파일을 만들어서 하나의 실행파일로 컴파일하는 방법.

 

 

헤더파일 : 함수의 선언은 헤더파일에 담는다.

 

 

 

소스파일1 : 함수의 정의는 소스파일에 담는다.

 

 

 

소스파일2 : 메인함수만 담는다.

 

 

프로그램의 몸체가 커질면 커질수록 코드관리 하기가 힘들어진다. 그래도 나눠서 관리하는 것이다.

 

또한, 관련 함수들끼리 모아서 다른 소스파일로 관리를 해야 한다. 계속 쪼개는 것이다.

Posted by scii
:

가변인자 함수

Programming/C 2013. 2. 14. 18:22 |

가변인자 함수에 대한 모든 것은 stdarg.h에 선언되어 있다.


매개변수 선언인 ...은 인자의 자료형과 수에 제한이 없음을 의미.


 1 단계 (va_list)    : 가변인자를 가리킬 수 있는 참조자를 선언한다.

 2 단계 (va_start)  : 참조자가 가변인자를 실제로 참조할 수 있도록 한다.

 3 단계 (va_arg)   : 참조자를 통해 전달된 정보를 추출한다.

 4 단계 (va_end)  : 참조자가 더 이상 가변인자를 가리키지 않도록 해제한다.






■ 매크로 함수의 가변인자 정의 : __VA_ARGS__


:매크로 __VA_ARGS__를 활용하면, 매크로의 형태로도 가변인자 함수의 정의가 가능하다.




...은 다양한 전달인자가 올 수 있음을 의미하고, __VA_ARGS__는 전달된 매개변수를 그대로 옮겨 놓는다는 의미의 매크로이다.


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

문자열을 복사하는 strcpy, strncpy함수  (0) 2013.02.15
scanf함수에 &를 붙이는 이유  (0) 2013.02.15
2진수를 8진수로 16진수로, 8진수를 16진수로  (0) 2013.02.15
2진수 음수 계산법  (0) 2013.02.15
파일의 분할.  (0) 2013.02.14
Posted by scii
: