전처리문

 전처리문

사용법 

의미 

 #include

 #include<????.h> 

 외부의 헤더파일을 읽어올때 사용하게됩니다. (stdio.h등이유명)

 #define

 #define True 1

 왼쪽을보면 True를 1로 지정한것이 됩니다. 따라서 define은 값을 지정할때 보통사용합니다.

 #if 

 #if 값

 오른쪽값이 True인지 false인지에 따라 #endif까지의 실행여부가 생깁니다.

 #endif

 #endif

 if문을 마칠때 사용합니다.

 #ifdef

 #ifdef True

 오른쪽이 #define으로 정의되면 endif까지의 실행문을 실행한다.

#ifndef

 #ifndef True

 오른쪽이 #define으로 정의되어 있으면 false 정의되어있지 않으면 T



#define

1
2
3
4
5
#include<stdio.h>
#define True 1
int main(void){
    printf("%d", True);
}
cs

 위와같이 사용할수 있습니다.


#if

1
2
3
4
5
6
7
8
#include <stdio.h>
#define True 1
int main(void) {
    #if True
    printf("%d", True);
    #endif
    return 0;
}
cs

위와같이하면 모두 실행이 됩니다.


#endif

1
2
3
4
5
6
7
8
#include <stdio.h>
#define True 1
int main(void) {
    #if True
    printf("%d", True);
    #endif
    return 0;
}
cs

위와 똑같이 if같은것들과 같이 쓰입니다.


#ifdef

1
2
3
4
5
6
7
8
#include <stdio.h>
#define True 1
int main(void) {
    #ifdef True
    printf("%d", True);
    #endif
    return 0;
}
cs

이렇게 사용할수 있습니다.


#ifndef

1
2
3
4
5
6
7
8
#include <stdio.h>
#define True 1
int main(void) {
    #ifndef True
    printf("%d", True);
    #endif
    return 0;
}
cs

위와같이하면 아무일도 일어나지 않습니다.


여기까지 블로그포스팅을 마치도록 하겠습니다. 


전처리문 -끝-




'C언어' 카테고리의 다른 글

파일입출력  (0) 2018.01.17
Beep  (0) 2018.01.17
문자열관련 함수  (0) 2018.01.12
구조체  (0) 2018.01.12
포인터  (0) 2018.01.12

fopen함수

 모드

 의미

 r

읽기모드로 파일을 엽니다.

 w

쓰기모드로 파일을 엽니다.(파일없으면 만듬 파일있으면 지우고시작..)

 a

뒤에붙이기는용으로 파일을 엽니다.(파일없으면 만듬)

 r+

읽기모드가 크지만 쓰기로는 파일이 삭제되진않지만 그위치에서 내용을 덮어쓸수 있습니다.(파일이없으면 못읽음)

 w+

읽기와 쓰기를하는데 쓰기가커서 파일이있으면 지우고 시작하고 파일이없으면 새로 만듭니다.

 a+

읽기쓰기이어쓰기 다되는데 쓰기는 이어쓰기로됩니다.

 t

 텍스트파일을열때 붙여줘야합니다.(예:rt a+t등등)

1
2
3
4
FILE *= fopen("text.txt""wt"); //텍스트파일에는 t를붙여야함
FILE *f2 = fopen("text2.txt""rt");//파일이 없으니 안읽힘..
FILE *f3 = fopen("text3.txt""at");
FILE *f4 = fopen("text4.txt""r+t
cs

위와같이 선언할수있고

FILE은 파일을 쉽게 열기위해 만들어져있는 구조체라고 알고계시면됩니다.

파일을 닫을때

파일을 닫을때는 fclose함수를 사용해 닫아야합니다. 

만약 닫지않으면 파일의내용이 사라지거나 없어질수 있습니다.

fclose(파일이름)으로 파일을 닫을수 있습니다.


fprintf

텍스트파일에 쓸때 보통 사용된다.

사용법

fprintf(파일변수이름, "입력할것");

위와같이 사용할수 있습니다.


fscanf

띄어쓰기 단위로 문자열을 읽어옵니다.

fscanf("%?", &읽어들일변수);

위와같이 사용할수 있습니다.


fgets

줄단위로 문자열을 읽어옵니다.

fgets(넣을변수, 읽어올 바이트수, 파일이름);

위와같이써서 파일에서 읽어올수 있습니다.


여기까지 포스팅을 마치도록 하겠습니다.

파일입출력 -끝-



'C언어' 카테고리의 다른 글

전처리문  (0) 2018.01.17
Beep  (0) 2018.01.17
문자열관련 함수  (0) 2018.01.12
구조체  (0) 2018.01.12
포인터  (0) 2018.01.12

Beep

오늘은 쉬어가기겸 Beep을 소개하겠습니다. 

※Beep를 쓰려면 먼저 Windows.h라는 헤더파일을 선언해야합니다. 

그리고 주파수값을 알아야합니다.

그것은 검색하시고 저는 옥타브6의값을 알려드리겠습니다.

1046.502

1174.659 

1318.510 

1396.913 

1567.982 

1760.000 

1975.533

이렇게있습니다. 

Beep의 사용법

 함수

사용법 

의미 

 Beep

 Beep(주파수값, 지속시간값)

 왼쪽주파수를 오른쪽 지속시간값만큼 울립니다.


1
2
3
4
5
#include<stdio.h>
#include<Windows.h>
int main(void){
    Beep(1046.502100);
}
cs

위와같이 만들수 있습니다.  

​그럼 여기까지 블로그포스팅을 마치도록 하겠습니다. 

Beep -끝-


'C언어' 카테고리의 다른 글

전처리문  (0) 2018.01.17
파일입출력  (0) 2018.01.17
문자열관련 함수  (0) 2018.01.12
구조체  (0) 2018.01.12
포인터  (0) 2018.01.12

typedef

구조체를 알기전에 typedef라는 함수를 알아야합니다. 

typedef란?:type define으로 타입을 선언한다. 정도의 뜻을 가지고 있습니다.

예제↓

1
2
3
4
5
#include<stdio.h>
int main(void)
    typedef int i;
    i num = 0;
}
cs


위와같이 쓸수있습니다.

결과는 int를 i로 바꾸고 i = int로바뀌어 num의 자료형은 int가 됩니다.

구조체

변수나 데이터들을 묶을때 사용하게됩니다.

예제↓

1
2
3
4
5
struct name{
    char name;
    char name[2];
    char name3;
};
cs

위와같이 선언하면 바이트수는 4바이트가 됩니다.

그리고 선언은 struct 이름{    }; 과같이 할수있습니다.

만약 사용하실때는 이름.변수 이렇게 써서 사용할수 있습니다.


typedef와 구조체 함께 사용

1
2
3
4
5
typedef struct name{
    char name;
    char name[2];
    char name3;
}Name;


cs

1
2
3
4
5
6
struct name{
    char name;
    char name[2];
    char name3;
};
typedef struct name Name;
cs

위와 같이 두가지 방법을 써서 사용할수있습니다.


구조체를 자료형으로 쓰기

1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
typedef struct name{
    char name;
    char name[2];
    char name3;
}Name;
int main(void){
    Name n1;
    Name n2;
    n2.name = 'n'// n2라는 구조체가 생긴것과 같다.
    n1.name = 'm'// n1이라는 구조체가 생긴것과같다.
}
cs

위와같이 쓸수있습니다.


구조체 포인터

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
typedef struct name{
    char name;
    char name[2];
    char name3;
}Name;
int main(void){
    Name *p;
    Name data;
    p = &data;
    (*p).name = 'e'//data의 name변수에 e를 넣었다.(p ->name = 'e';와같습니다.)
}
 
cs

위와같이 포인터를 구조체에서 활용가능합니다.


구조체 배열

소스코드↓

1
2
3
4
5
6
7
8
9
#include<stdio.h>
typedef struct name{
    char name;
    int num;
    char name3;
}Name;
int main(void){
    Name man[2= {'e'3'p''a'5'b'};
}
cs

위와같이 쓸수있습니다.


그럼여기까지 블로그포스팅을 마치도록 하겠습니다.

구조체 -끝- 



'C언어' 카테고리의 다른 글

Beep  (0) 2018.01.17
문자열관련 함수  (0) 2018.01.12
포인터  (0) 2018.01.12
배열  (0) 2018.01.12
함수  (0) 2018.01.12

포인터

​주소를 저장하는 변수입니다.(바이트수:4)

형식: 자료형 *포인터변수명

자료형은 포인터변수와 연결될변수와 같아야합니다.

1
2
3
4
5
6
7
8
#include<stdio.h>
 
int main(void){
    int a = 10;
    int *pa; //포인터변수 선언
    pa = &a; //포인트변수에 변수의주소를 넣어주는
    return 0;
}
cs

위와같이 사용할수 있습니다.

소스코드↓

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
 
int main(void){
    int a = 0;
    int b = 10;
    int *ptr;
    ptr = &a;
    b = *ptr;
    printf("변수a의주소:%p\n", a);
    printf("ptr의값:%p\n", ptr);
    printf("*ptr의값:%d\n"*ptr);
    printf("b의값:%d\n", b);
}
cs

※%p는 주소를 나타낼때쓰는 서식문자입니다.

결과값은

변수a의주소:0xa의주소

ptr의값:위와같음

*ptr의값:0

b의값:0

이렇게됩니다.

※*ptr과ptr의 다른점

ptr은 a의주소를넣었으니 a의주소를 나타내고

*ptr은 a의주소의값을 의미합니다.


포인터와배열

배열의주소는 자료형의 바이트수씩 차이가납니다.

예로 int a[3];이있고 첫번째주소가 100이라면

 100

 104

108 

위와같이 int(4바이트)이니 4씩차이가납니다.


배열을 포인터로 나타내는법

int a[5];가있다면

a[1] = *(a+1) a[2] = *(a+2) a[3] = *(a+3) a[4] = *(a+4)

배열의이름은 그자체로 주소를 나타내게됩니다. 따라서 a+1의값은 a[1]과같은 값입니다.


배열의주소 출력

1
2
3
4
5
6
7
8
9
#include<stdio.h>
 
int main(void){
    int a[5= {12345};
    int *ptr;
    int i;
    for (i = 0;i<5;i++){
        printf("배열의 값:%d, 배열의 값:%d", a[i], *(a+i));
}
cs

이렇게 쓸수있습니다.

여기서 블로그포스팅을 마치도록 하겠습니다.

포인터 -끝-


'C언어' 카테고리의 다른 글

문자열관련 함수  (0) 2018.01.12
구조체  (0) 2018.01.12
배열  (0) 2018.01.12
함수  (0) 2018.01.12
switch문  (0) 2018.01.12

1차원 배열

선언은 int 이름[변수개수]로 선언할수있습니다.

변수를 여러개 한번에 생성할수있습니다.


선언방법의예: int num[10];

배열의 바이트수: 자료형의바이트수 X 변수의개수 (만약 int num[10]이라면 40바이트입니다.)


배열의활용법:배열을 int num[10];이렇게 했다면 

 0

 1

 2

 3

 4

 5

 6

 7

 8

 9

이렇게 인덱스값이라는것이 존재합니다.

만약 배열의 4번째에 값을 넣고싶다면 3을 써야합니다. 배열에서는 0부터셉니다. 예:int num[3] = 4;

소스코드↓

1
2
3
4
5
6
7
8
#include<stdio.h>
 
int main(void){
    int num[10];
    num[3= 4;
    char str[] = "Hello World!"//문자열을 넣는것인데 자동으로계산해서 13라는길이가 들어가게됩니다.
    return 0;
}
cs

위의 Hello World!가 13가되어 들어간이유

 H

e

 공백

 W

null 

문자열은 위와같이 null값이 맨뒤에 자동으로 붙게됩니다.(null이 붙어야 문자열이 완성된것입니다.)

그래서 길이는13 하지만 C언어는 0부터세기 때문에 인덱스값은 12가됩니다. 


2차원배열

선언방법:int 이름[세로][가로]

예:int num[2][3];

위의인덱스값 정리

 [0][0]

[0][1] 

[0][2] 

 [1][0]

[1][1]

[1][2] 

이렇게 선언했다고 볼수있습니다.

소스코드↓

1
2
3
4
5
6
7
8
9
 
#include<stdio.h>
 
int main(void){
    int num[2][3= {{123}, {456}}; //선언과 동시에 초기화하는법
    int su1[][3= {123456789//저절로 세로길이에 3이들어가게됩니다.
    return 0;
}
 
cs

위와같이 쓸수있습니다.

3차원배열 4차원배열도있지만 2차원도 개인적으로 잘쓰지않는데 더많은 차원을 쓸필요가 없다고 생각되어 없앴습니다.

여기까지 블로그포스팅을 마치도록 하겠습니다.

배열 -끝-


'C언어' 카테고리의 다른 글

구조체  (0) 2018.01.12
포인터  (0) 2018.01.12
함수  (0) 2018.01.12
switch문  (0) 2018.01.12
입출력관련  (1) 2018.01.12

함수

중학교때 배웠듯이 함수는 미지수x를 넣으면 y의값이 나오는 그런것입니다.

함수의 기본구조↓ 

1
2
3
4
5
6
7
8
#include<stdio.h>
//리턴타입:int 함수의이름:add 매개변수:int x, int y
int add(int x, int y) 
//함수의 시작
    int result; // 함수의 기능
    result x + y; //~~
    return result; //~~
//함수의 종료
cs

리턴타입: return result를위의 기본구조에서 하고있다. result는 int형닙니다. 그래서 돌려주는 값이 int이니 리턴타입이 int입니다.


함수의이름: 변수명과같이 아무거나 지정해줄수 있습니다.


매개변수 : 일반적 함수에서 사용하기 위해값을 받습니다.

(함수가 종료되면 사라집니다.)


함수의 경우4가지


이렇게 쓸수있습니다.

※void란? : 값을 안받거나 리턴타입이 없음을 의미합니다.


함수를 만약 사용하는 문장밑에 사용하려면 미리 함수를 선언 해놔야하는 데 만약 밑에 있는 함수가 

int sum(int x, int y)라고 한다면 사용하려는 곳 위에 int sum(int x, int y);이렇게 선언 해주시고 정의는 밑에 해주셔야 오류가 없습니다.


함수를 선언 하는법및 사용법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
 
int add (int x, int y)
{
    int result;
    result = (x + y);
     return result;
}
int minus (int x, int y);//중요
int main(void){
    int a = 10, b = 20;
    int result;
    result = add(a, b);
    result = minus(b, a);
    return 0;
}
int minus (int x, int y){
    int result;
    result = (x - y);
    return result;
}
cs

이렇게 선언및 사용할수있습니다.

그럼 여기까지 블로그포스팅을 마치도록 하겠습니다.

함수 -끝-


'C언어' 카테고리의 다른 글

포인터  (0) 2018.01.12
배열  (0) 2018.01.12
switch문  (0) 2018.01.12
입출력관련  (1) 2018.01.12
반복문  (0) 2018.01.12

switch문

if문을 간결히 사용하기위해서 사용합니다.(보통) 

 switch문

사용법 

의미 

 switch

switch(num) 

num에대해 switch문을 실행한다. 

 case

case 3: {  }, case 'a': {  } 

 switch의변수가 case오른쪽값일때 실행문을 실행한다.

 default

default: {  } 

 case에 없는경우 else의역할


소스코드↓

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<stdio.h>
int main(void){
    int num = 0;
    puts("수를 입력하세요");
    scanf("%d"&num);
    switch(num){
        case 1: {
            puts("1입니다.");
            break;
        }
        case 2: {
            puts("2입니다.");
            break;
        }
        case 3:
            puts("3입니다.");
            break;
        }
        case 4: {
            puts("4입니다.");
            break;
        }
        default: {
            puts("1, 2, 3, 4는아닙니다.");
            break;
        }
    }
    return 0;
}
cs


※break;를 적는이유:switch문은 만약 저예제에서 case 1을 실행한다고 한다면 밑에실행문까지 다실행되버립니다. 그래서 break;를 써서 빠져나오게 해야합니다. 

오늘은 여기까지 포스팅을 마치도록 하겠습니다.

switch문 -끝- 


'C언어' 카테고리의 다른 글

배열  (0) 2018.01.12
함수  (0) 2018.01.12
입출력관련  (1) 2018.01.12
반복문  (0) 2018.01.12
if 조건문  (2) 2017.12.19

표준출력함수

 표준출력함수

 사용법

 의미

 putchar

 putchar(65);, putchar('a');

 단일문자 출력함수이다.

 putc

 putc('a', stdout);

 이것도 단일문자 출력함수이다. putchar을 

이걸로만들었다.

 puts

 puts("Hello World!");

 자동으로 \n이 들어가있다.

문자열이 출력된다.

 printf

 printf("Hello World!");

 이때까지 봤다싶이 문자열 출력함수인데 서식문자를 쓸수있다.


여기서 putchar(65)는 출력값이 A가나온다. 이유↓

C언어에는 아스키코드라는게 존재하는데 문자마다 아스키코드값이 있는데 A의아스키코드값이 65입니다.

Tip:​stdout은 표준출력을 의미합니다.

예제↓ 

1
2
3
4
5
6
7
8
#include<stdio.h>
int main(void){
    putchar(65);
    putc('A', stdout);
    printf("\n");
    puts("Hello World!");
    return 0;
}
cs


결과는

AA

Hello World!

이렇게 나오게됩니다.


표준입력함수

표준입력함수

 사용법

 의미

 getchar

 getchar();

 문자하나를 입력받는다.

 getc

 getc(stdin);

 위와 같지만 getchar을 이걸로 만들었다.

 getch

 getch();

 위와 같다.

 scanf

 scanf("%서식문자", &변수);

 서식문자에따라 정수형 실수형 문자까지 입력받을수있다.

※scanf에 &은 변수의 주소를 의미한다. 변수의주소에 받은걸 넣는다고 보면됩니다.

Tip: scanf는 문자하고 엔터까지 쳐야끝나지만 다른함수들은 문자만치면 입력이끝난다.

소스코드↓

1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main(void){
    int i = 0;
    i = getchar();
    i = getc(stdin);
    i = getch();
    scanf("%c"&i);
    return 0;
}
cs

결과는

i에 사용자가 입력한값이 들어갑니다.


기타처리

상황:단일문자를 입력받는데 사람이 잘못하고 a를써야하는데 ab를 쓰면?

b가 저장되어 버립니다.

 a

 b


이러면 a가대입되는데 버퍼라는곳에 b가남아서 b를 써야합니다. 그래서 썼는데 i값이 b가되어버립니다.

버퍼를 비울때

 함수

 사용법

 의미

 rewind

 rewind(stdin)

표준입출력의 버퍼를비운다.

소스코드↓

1
2
3
4
5
6
7
#include<stdio.h>
int main(void){
    int i = 0;
    i = getchar();
    rewind(stdin);
    return 0;
}
cs

문자만 입력해야하는데 Enter까지 썼을때

getchar을 사용

소스코드↓

1
2
3
4
5
6
7
#include<stdio.h>
int main(void){
    int i = 0;
    i = getchar(); // i
    getchar(); //엔터값을 받음
    return 0;
}
cs

여기까지 블로그 포스팅을 마치도록 하겠습니다.


입출력관련 -끝-



'C언어' 카테고리의 다른 글

함수  (0) 2018.01.12
switch문  (0) 2018.01.12
반복문  (0) 2018.01.12
if 조건문  (2) 2017.12.19
연산자  (0) 2017.12.18

반복문

 반복문

사용법 

의미 

 while

 while (num>1), while (1)

 우측내용이 사실(1)인경우 밑의 실행문장을 실행을 반복하고 거짓(0)이 되는경우 그냥 실행안하고 넘어간다.

 do while

 do{

 } while(num>1)

 한번은 꼭 실행하게된다.

 (다른건 위와같다.)

 for

 for(i=0;i<5;i++), for(;;)

 가운데의 문장이 거짓이될때까지 계속반복한다.


※while(1), for(;;)는 무한반복입니다. 

소스코드↓​

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
 
int main(void){
    int i = 0;
    while (i<5)
    {
        printf("실행문장%d", i);
        i++;
    }
    i=0;
    do{
    printf("실행문장%d", i);
    i++;
    } while(i<1)
    for(i=0;i<1;i++){
    printf("실행문장%d", i);
    }
    return 0;
}
cs

결과는

실행문장0실행문장1실행문장2실행문장3실행문장4실행문장0실행문장0

이렇게 나옵니다.


반복문관련 문법


​break=말그대로 반복문을 깨듯이 실행되면 반복문에서 나가버린다.

continue=실행문의 처음으로 이동한다.

소스코드↓

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
 
int main(void){
    int i = 0;
    while (i<5)
    {
        printf("실행문장%d", i);
        i++;
    }
    i=0;
    do{
    printf("실행문장%d", i);
    i++;
    } while(i<1)
    for(i=0;i<1;i++){
    printf("실행문장%d", i);
    }
    return 0;
}
cs

이렇게 쓸수있습니다.

break는 무한반복을 나가고 싶을 때 자주사용합니다.


반복문 -끝-



'C언어' 카테고리의 다른 글

switch문  (0) 2018.01.12
입출력관련  (1) 2018.01.12
if 조건문  (2) 2017.12.19
연산자  (0) 2017.12.18
자료형과 변수  (0) 2017.12.18

+ Recent posts