12. [C++] C++에서 C언어의 표준함수 호출하기
2024. 4. 11. 18:33ㆍ[C++]/C++ 언어 기초
🍃 C++에서 C언어의 표준함수 사용하기
c를 더하고, .h를 빼자
#include <stdio.h> -> #include <cstdio>
#include <stdlib.h> -> #include <cstdlib>
#include <math.h> -> #include <cmath>
#include <string.h> -> #include <cstring>
- 헤더파일의 확장자인 .h를 생략하고 앞에 c를 붙이면 C언어에 대응하는 C++의 헤더파일 이름이 된다.
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
int main (void)
{
char str1[] = "Result";
char str2[30];
strcpy(str2,str1);
printf("%s: %f \n",str1,sin(0.14));
printf("%s: %f \n",str2, abs(-1.25));
return 0;
}
🍃 C++의 헤더를 선언해야 하는 이유
- C++의 관점에서, 여전히 다음형태로 함수호출을 허용하는 이유는 '하위 버전과의 호환성(backwards compatibility)'를 제공하기 위함이다.
#include <stdio.h>
int main(void){
printf("Hello world");
return 0;
}
- C++ 표준 라이브러리가 제공하는 함수들과 C 표준 라이브러리가 제공하는 함수들이 완전히 일치하는 것도 아니다.
- C++ 에서는 함수 오버로딩이 가능하기 때문에 자료형에 따라서 함수의 이름을 달리해서 정의하지 않고, 보다 사용하기 편하도록 함수를 오버로딩해두었다.
long abs(long num);
float abs(float num);
double abs(double num);
long double abs(long double num);
문제
다음 표준함수를 호출하는 예제를 만들되, C++의 헤더를 선언해서 만들어보자.
그리고 예제의 내용은 상관이 없지만, 아래의 함수들을 최소 1회 이상 호출해야 한다. 참고로 다음 함수들은 C언어의 경우 <string.h>에 선언되어 있다
1.strlen 문자열의 길이 계산
2.strcat 문자열의 뒤에 덧붙이기
3.strcpy 문자열의 복사
4.strcmp 문자열의 비교
#include "stdafx.h"
#include <iostream>
#include <cstring>
using namespace System;
using namespace std;
int main (void)
{
char str1[20] = "Hello world!";
char str2[20] = "추가한 문장입니다.";
char str3[20];
cout<< "문자열의 길이는 "<<strlen(str1)<<"입니다."<<endl;
strcat(str1,str2);
cout<< "문자열을 붙이면 "<< str1 << endl;
strcpy(str3,str1);
cout<< "str1을 str3에 복사하면 " << str3 << endl;
if (!strcmp(str1, str3)){
cout << "str1과 str3은 동일하다." << endl;
}else{
cout<< "str1과 str3은 다르다.<< endl;
}
return 0;
}
반응형
'[C++] > C++ 언어 기초' 카테고리의 다른 글
14. [C++] 클래스(Class)와 객체(Object) (1) | 2024.04.12 |
---|---|
13. [C++] C++에서의 구조체 (0) | 2024.04.12 |
11. [C++] malloc & free를 대신하는 new & delete (0) | 2024.04.11 |
10. [C++] 참조자(Reference)와 함수2 (0) | 2024.04.11 |
9. [C++] 참조자(Reference)와 함수 (0) | 2024.04.11 |