본문 바로가기

프로그램언어

c언어 scanf 에러 발생 scanf함수 실행시 에러 코드 C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. scanf 함수가 취약하니 scanf_s를 사용하거나 _CRT_SECURE_NO_WARNINGS 를 사용하라고 출력창에 메시지가 나옵니다. 여기서 scanf_s함수를 사용하면 실행이 됩니다. scanf() 함수를 사용할 수 있도록 설정하기 위해서는 _CRT_SECURE_NO_WARNING를 사용해 보겠습니다. 2가지 방법으로 설정해 보겠습니다. 1. 전처리기를 사용하는 방.. 더보기
c언어 파일 입출력 1. 파일 입출력 파일 포인터와 파일 열기 파일 입출력을 수행하려면 파일에 FILE형 포인터를 할당하여 주어야 한다. 이를 파일 열기라 한다. 파일을 열 때에 fopen() 함수를 사용한다. 함수 원형 FILE *fopen(char *file, char *mode) file을 mode 상태로 열고 파일 포인터를 할당하여 되돌린다. 파일을 열지 못하면 NULL(0)을 되돌린다. 모드 설명 r 파일을 처음부터 읽기 위해 엽니다. 파일이 없으면 오류 발생 w 파일을 무조건 새로 생성하여 파일을 처음부터 쓰기 위해 엽니다.. 파일이 존재하지 않으면 생성, 이미 존재하는 파일 내용은 삭제됨 a 파일의 끝에 새로운 내용을 추가하기 위해 엽니다. 파일이 존재하지 않으면 생성 r+ 이미 존재하는 파일을 읽기와 쓰기로 .. 더보기
c언어 표준 함수 수학 함수 (math.h) double sqrt(double x); // x의 제곱근을 반환 double log(double x); // 자연로그 x의 값을 반환 double exp(double x); // 무리수 e의 x제곱을 반환 double pow(double x, double y); // x의 y제곱의 값을 반환 double sin(double x); // x의 사인값을 반환 double cos(double x); // x의 코사인 값을 반환 double tan(double x); // x의 탄제트 값을 반환 소스코드 실행 결과 #include #include #define PI 3.141592 int main() { printf("sqrt(25.0) : %g\n", sqrt(25.0)); pri.. 더보기
c언어 구조체와 공용체 1. 구조체 구조체란 서로 다른 데이터 타입의 집합을 의미하며 사용자가 직접 새로운 데이터 타입을 만드는 데이터 타입을 말한다. 이 때 사용하는 명령어는 'struct'이다. 구조체의 정의 struct 구조체명 { 멤버 변수 선언1 멤버 변수 선언2 ... }; 2. 구조체 멤버 참조 방법 일반 변수 : .(온점) 포인터 변수 : ->(화살표) 소스코드 소스코드(입력 및 출력) #include struct score { char name[10]; int kor; int com; int mat; }; void main() { struct score x= {"홍길동", 70, 80, 90}; printf("x.name : %s\n", x.name); printf("x.kor : %d\n", x.kor); p.. 더보기
c언어 사용자 정의 함수 1. 함수 함수란 프로그램에서 특정한 작업을수행하도록 따로 정의해 놓은 독립적인 프로그램의 단위를 의미 한다. 함수 타입 반환 값 매개 변수 첫 번재 유형의 함수 없음 없음 두 번재 유형의 함수 없음 있음 세 번째 유형의 함수 있음 없음 네 번째 유형의 함수 있음 있음 2. 첫 번째 유형의 함수 첫 번째 유형의 함수는 반환 값도 없고 매개 변수도 없는 함수입니다. 예문으로 확인해 보겠습니다. 소스코드 실행 결과 #include void sum(); void main() { sum(); } void sum() { int i, hap=0; for(i=1; i 더보기
c언어 포인터 1. 포인터 포인터란 메모리의 주소를 저장하는 변수이다. 포인터 변수는 변수명 앞에 애스터리스크(*) 입력하여 표현한다. *를 간접 연산자라 합니다. 포인터 선언 자료형 *변수명 또는 자료형* 변수명 왜 포인터변수를 쓰는 것인가? 1. 동적으로 메모리 할당을 하기 위해서이다. 2. 함수에서 인수를 받아 다른 내용으로 갱신하기 위해서이다. int *p; p : p에는 메모리가 참조된 주소가 저장 *p : p가 가리키고 있는 주소 안의 값 예] 포인터 변수를 잘못 사용한 경우 char *ptr1 // 전역 변수로 0으로 초기화됨 int main() { double *ptr2; // 지역 변수 0으로 초기화되지 않음 *ptr2 = 3.14; // 에러발생 printf("%d\n", ptr1); printf(".. 더보기
c언어 배열 1. 배열 배열이란 동일한 자료형의 집합이다. 변수의 확정된 형태로 동일한 자료형의 여러 자료를 손쉽게 처리 할 수 있다. 지금까지 변수를 선언할 때 int a, b, c, d, e 이런 방식으로 선언 했습니다. 지금 5개의 정수형 변수를 선언 했는데 이런 정수형 변수가 10개, 20개, 100개 라면 변수를 하나 하난 선언한다는게 어렵습니다. 그래서 배열 이란는 것이 있습니다. 정수형 변수 10개를 선언하라고 하면 int arr[10]으로 선언하면 끝입니다. 머 100개를 선언하라고 하면 int arr[100] 이라고 선언하면 됩니다. 아주 간단하게 끝났습니다. 위 그림을 보면 arr[0], arr[1], ... 여기서 숫자 0, 1, 2, 3, 4를 배열의 첨자라합니다. 배열은 배열의 첨자를 통해 데.. 더보기
c언어 반복문(for, while, do ~ while) 1. 반복문은 특정 조건을 만족하는 동안 계속 반복하여 실행하는 제어문입니다. 반복 제어문에는 for문, while문, do ~ while문이 있습니다. 반복문종류에 대한 표현 형식을 알아 보겠습니다. for 반복문 형식 for( 초기값; 조건식; 증감식) 명령문 while 반복문 형식 while (조건식) 명령문 do ~ while 반복문 형식 do 명령문 while ( 조건식); 2. break문 break문은 현재 실행 중인 반복문에서 실행을 중단하고자 할 때 사용합니다. 앞에서 선택 제어문에서 보았듯이 switch문의 실행을 중단할 때도 사용했습니다. 3. continue문 break문은 반복문을 빠져나오지만 continue문은 한번 건너 뛰어 반복문을 계속 실행하게 하는 기능입니다. 예를 들어 .. 더보기