달력

2

« 2025/2 »

  • 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

scanf_s에서 s없애기

프로그램 맨 위에 

#pragma warning(disable:4996)

를 붙여주면 visual studio 2013에서 scanf_s나 freopen_s 처럼 _s 를 붙여줘야하는 것을 피할 수 있다. 


freopen

freopen은 프로그래밍 문제 풀때 입력을 자동으로 받아주는 함수이다.

프로그램의 프로젝트안에 text파일을 넣어주고 함수를 쓰면 text파일 안에있는 값을 자동으로 받아서 키보드로 입력한것처럼 동작하게 한다.

text파일이 다음과 같이 저장해놓고 프로그램에서 freopen을 쓴다.

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
#include <stdio.h>
#pragma warning(disable:4996)
 
 
int main(void)
{
    int d[20];
 
    if (freopen("sample_input.txt""r", stdin) == NULL)
        fprintf(stderr, "error redirecting stdin\n");
 
    for (int i = 0; i < 20; i++){
    
        scanf("%d"&d[i]);
        
    }
 
    for (int i = 0; i < 20; i++){
 
        printf("%d ", d[i]);
    }
 
    printf("\n");
 
    return 0;
}
cs

 

'프로그래밍 > C언어' 카테고리의 다른 글

sizeof  (0) 2016.05.22
함수 포인터  (0) 2015.11.24
Visual Studio 설치시 설정 및 Hello world!  (0) 2015.09.11
구조체 포인터의 선언과 접근( -> )  (0) 2015.09.07
구조체 선언에 typedef 사용하기  (0) 2015.09.07
:
Posted by youjin.A
2015. 10. 23. 07:37

void* 프로그래밍/자료구조설계2015. 10. 23. 07:37

void*

void포인터는 어떤 타입의 포인터든 다 받을 수 있는 포인터이다.

받는 것은 어떤 포인트형이든 다 받을 수 있다.

그런데 그 포인터에 접근할 때는 해당 포인트의 자료형에 맞에 접근해야 한다.

한마디로, 주소값이 void*에 들어갈때는 자유로우나 나올때는 알맞게 접근해야한다.

다음 예제를 보면 알기쉽다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(){
    void* ptr;
 
    int i = 7;
    float f = 23.5;
 
    ptr = &i;
    printf("%d\n"*((int*)ptr));
 
    ptr = &f;
    printf("%f\n"*((float*)ptr));
 
    return 0;
}
 
cs

10줄과 13줄에 포인터가 int*와 float*f 로 형변환 시켜서 포인터에 접근한 것을 확인할 수 있다.

형변환 해주지 않으면 에러가 나서 컴파일이 안된다. 



'프로그래밍 > 자료구조설계' 카테고리의 다른 글

인터넷 check sum 함수의 구현  (0) 2016.02.08
다운  (0) 2016.02.07
열거형 enum  (1) 2015.10.23
윈도우에서 리눅스처럼 컴파일하기  (1) 2015.09.19
:
Posted by youjin.A
2015. 10. 23. 01:36

열거형 enum 프로그래밍/자료구조설계2015. 10. 23. 01:36

열거형이란 내가 사용할 데이터들의 집합이다. 예를들어 TRUE, FALSE나 색깔, 요일, 과일 등의 집합이다.

int와 같이 열거형에 키워드가 있는데 그것은 'enum'이다.


1. 열거형 정의

열거형은 다음과 같이 선언한다.

enum    열거형_이름    {멤버_변수들};

예를들어 enum daynames {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; 이렇게 선언할 수 있다.

이때 멤버변수들은 맨 좌측이 0이고, 좌측에서 우측으로 갈 수록 값이 1씩 커진다.

그런데 만약에 초기값을 Sun = 7 으로 했다면, 그 다음 변수는 1이 커져서 4가 된다.


2. 열거형 변수 선언

열거형 변수는 먼저 열겨형으로 선언한 멤버들만 저장할 수 있는 변수를 말한다.

구조체와 비슷하게 enum+열거형_이름이 자료형이라고 생각할 수 있기 때문에 열거형 변수는 다음과 같이 선언한다.

enum    열거형_이름    변수_이름

선언 후에는 자기 멤버만 넣을 수 있다.

 enum daynames today;
    today = Mon;



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
#include <stdio.h>
 
enum daynames {Sun= 7, Mon = 1, Tue, Wed, Thu, Fri, Sat};
 
int main(){
    printf("Sun : %d\n", Sun);
    printf("Mon : %d\n", Mon);
    printf("Tue : %d\n", Tue);
    printf("Wed : %d\n", Wed);
    printf("Tue : %d\n", Tue);
    printf("Fri : %d\n", Fri);
    printf("Sat : %d\n", Sat);
 
    int remaining;
    enum daynames today, dday;
    today = Mon;
    dday = Fri;
 
    remaining = dday - today;
    if (remaining >= 0)
        printf("D-%d\n", remaining);
    else
        printf("D-day already came.\n");
 
    return 0;
}
cs


'프로그래밍 > 자료구조설계' 카테고리의 다른 글

인터넷 check sum 함수의 구현  (0) 2016.02.08
다운  (0) 2016.02.07
void*  (0) 2015.10.23
윈도우에서 리눅스처럼 컴파일하기  (1) 2015.09.19
:
Posted by youjin.A