다시 오신 걸 환영해요
표준 c 라이브러리에 있는 기능에 관해 계속
논의할게요
네 강의 중에 이미 다뤘던 기능들이지만 다시 한 번
짚고 넘어가죠
네 C 표준 라이브러리에 있는 여러 가지 중요하고
다양한 기능들을 이번 강의에서 이미 다뤘었죠
예제들과 다른 내용들도 함께요
스트링 함수에 대해 많이 얘기했죠
네 어떤 건 사용이 쉽고 어떤 건 우리가 많이 쓸 거예요
그러니 익숙해지셔야 해요
이런 함수를 사용하려면 헤더 파일 문자열을
포함해야 해요 h, 모든 건 문자열로 정의돼요 H요
고양이 얘기도 했죠
스트캣은 투스트링을 연결해요 2개의 매개 변수와 2개의
문자 포인터를요
그러면 문자 포인터를 다른 것에 연결해서 리턴하죠
마지막 문자열 끝에 null 문자를 넣으면
s1을 반환해요
캐릭터가 포함된 아스트링을 찾죠
애캐랙터 스타도 방영될 거예요
수색하기 좋은 방법이죠
스트링 캣에 대해 얘기했었죠
스트 비교는 두 개의 스트링을 비교하는 거예요
이게 일반적인 방법이에요
포인터 2개가 필요하죠 그리고it은 정수를 반환해요
이것에 대한 예가 몇 개 있어요 기본적으로 0을 반환하면 두
개의 문자열이 동일하죠
네 크거나 작으면 0보다 크거나 작으면
0보다 크면 보통 알파벳 순으로 s1이 크다는 뜻이에요
네 네 A를 포함하는 문자열을 통과시키고 두 번째 문자열이 b라면
0보다 큰 걸 반환할 거예요 왜냐하면 0보다 작은 걸 반환하겠죠 a가 b보다
작으니까요
네 첫 번째 매개 변수는 b로 넘기고 두 번째 매개 변수는 c로 넘기면
b나 c로 시작하는 문자열의 일종이라면 0보다 크게
반환되겠죠
값을 반환하는 걸 이해해야 해요
중요한 건 비교예요
알았어요
스트링을 다른 스트링에 할당하는 방법이죠
네 문자열과 포인터, 문자 배열을 기억하세요 문자열을
할당 연산자를 이용해 직접 할당할 수 없습니다
정수와 부동 소수점은 연산자를 이용하세요
현악기로는 안 되죠
네 문자열을 포인터에 할당할 때 str 카피를 사용해야 해요 캐릭터 포인터나
캐릭터 배열에요
큰따옴표 안에 문자열 상수를 초기화할
수 있어요
하지만 개발 후에, 만약 바꾸고 싶다면
str 카피를 사용해야 해요.
길이도요
문자열의 길이를 맞추는 또 다른 중요한 함수죠
길이를 나타내는 T 사이즈도 반환되죠
이 모든 문자열 함수는 포인터나 문자 배열로
이루어져 있어요
그래서 그게 작동하는 방식을 이해해야 해요
다른 스트링 함수 strncat요
네 네 함수들을 기억하세요 엔드를 추가하는 것이 더 안전합니다
버퍼 오버플로가 없기 때문입니다
좋아요, strncat에서 세 번째 매개 변수가 추가됐어요 이렇게 말할 거예요 수많은 매개
변수를 복사하거나 연결하세요
네 보통 세 번째 매개 변수는 첫 번째 매개 변수의 크기가 되죠
그보다 더 큰 건 복사하기 싫으니까요 근데 세 번째 변수는
네 네 이 함수들은 다른 문자열 함수들
위에 활용되어야 합니다 버퍼 오버플로에서 안전하기 때문입니다
비교해보죠
s1과 s2를 위한 특정한 수의 글자를 비교할 거예요
Stn 카피, 세 번째 매개 변수 엔드는 str의 길이 혹은
s1의 크기일 거예요
그렇죠 s2와 s1을 복사할 테지만 s1보다 바이트를
많이 저장하진 않을 테니까요
차르 차르요
여기서 캐릭터의 마지막 발생을 검색할
수 있어요
아주 친숙해 보이죠 str char와 비슷해요 여기에 r이
하나 더 있어요
네 그러니까 처음이 아니라 이게 마지막이
될 텐데 아까랑 같은 방법을 썼네요
좋아요,
문자열을 검색할 거예요
이건 검색 함수예요 문자열 안에서 하위
구조를 찾으려는 거죠
역시 두 캐릭터 요점을 취하고 있어요
스트톡이요
데이터 구문 분석을 돕는 중요한 기능이죠
네 네 스트토크는 delimter를 두 번째 매개 변수로 받아들이고
문자열 내에서 그 delimter 캐릭터를 찾습니다
종종 s2를 위해 스페이스나 라인 피드 같은 걸 사용하죠
문자열을 토큰의 개수로 분해할 거예요
데이터를 분석하고 싶을 때 사용하세요
네 매번 스트톡을 여러 번 호출해야 합니다 null이
될 때까지요 주어진 문자열에서 찾고 싶은 다음 토크를 찾고 있다면요
중요한 행사도 있었죠
모든 캐릭터 기능은 ctype에서 정의돼요 H요
네 우리가 사용한 캐릭터 함수는 IS 함수였어요 문자가 문자와
숫자인지 공백인지 확인하는 거죠 혹은 컨트롤 문자인지
숫자인지 확인해요 숫자요 여러 가지 기능이
있었어요
그 광고를 기억하세요 이 캐릭터들의 실제 성격을
확인할 수 있어요
변환 기능도 있었어요 윗부분이 두 개예요
소문자 두 개가 c의 소문자
값과 같을 거예요
우리가 소문자를 대문자로 전환할 때 어려웠던 거 기억하죠?
네 그 과제에선 ASCI 테이블에 추가했어요 캐릭터에 upper를
2개 추가할 수도 있었죠
차터 주위에 두 대를 설치할 수 있어요
광고만 포함해서요 h를 입력하면 소문자를 대문자로 바꾸죠
입력과 출력 등 오작동이 많았어요
네 파일을 읽고 쓰는 데 집중했지만 키보드에서
입력값을 읽고 콘솔이나 화면에 데이터를 출력하기도 했어요
가장 흔한 IO 오작동은 모두 표준이죠
h 헤더 파일이요
네 네 이 파일엔 다양한 IO 함수에 대한 선언과 end
of file, null 같은 상수에 대한 정의가 들어있습니다 표준 출력과
표준 오류의 표준이죠
그런 게 다 불변의 가치죠
forthe 파일 구조 파일 상수도 있어요
Fclose는 스트림을 닫기 위해 사용하는 기능이에요
파일 포인터로 파일을 종료하죠
성공했다면 0을 반환하고 아니면 망하는 거죠
Feof요 Feof요 이 기능은 명시적으로 사용하지 않았지만 여러분이 파일
끝에 있는지 확인해줄 겁니다 상수와 비교하는 대신 발굽을
사용할 수 있어요
둔갑증이에요
내부 버퍼의 데이터를 전부 씻어내는 기능이죠
네 다시 시작하고 싶을 때 이걸 해야 할 때도 있지만 기본적으로
버퍼 안에 있는 모든 걸 제거하는 거잖아요
fgetc도 있어요
이건 personalcharacters에서 읽을 때 파일 포인터를 가져가요.
Fget 위치예요
이건 전위 기능이에요
네 파일 포인터와 관련된 파일의 현재 위치를 알아내어
표준 io에서 정의된 f 위치 유형에 저장합니다
H도요
Fget가 있었어요
현악기로 읽는 거였죠
좋아요, 표시된 파일에서 글자를 읽을 수 있는데
글자가 여러 개예요
Fopen은 정밀 모드로 파일을 엽니다 파일 포인터를 이용해
읽거나 쓰거나 첨부하죠
네 네 Fprintf는 데이터와 형식화된 출력을 작성하고 printf 함수와
유사합니다 포인터에 의해 지정된 인수를 취해 형식화된
데이터를 사용합니다
네 정수를 적고 형식 지정자를 이용한 더블을 적고 쓰고 싶은
변수를 적으세요
파일에 문자를 작성하는 fputc도 있었죠
Fput은 파일에 문자열을 작성하죠
버퍼와 파일포인터가 있어요 여러분이 쓰고자 하는 것과
쓰고자 하는 파일이요
FSQANF는 파일에서 데이터를 읽죠
입력값을 잡아 scanf와 같은 형식을 사용할
거예요 형식 식별자와 변수가 필요합니다
우주 공간으로 분리된 데이터에 토레드를 저장하는 건 좋네요
fscanf를 사용할 수 있고 형식을 지정할 수 있습니다 ints:
더블: 특정 데이터 형식에 직접 읽어보세요
시막이 당신이 가리키는 위치를 파일로 옮길 거예요
그러니 밑 작업을 시작하거나 파일을 끝낼 필요가 없어요
파일 가운데로 바로 갈 수 있어요
네 그 자세를 취하면 다음에 읽고 쓸 때는 그 자세를 이용해서
글을 쓰거나 읽어요
설정 위치는 씬과 비슷해요
네 네 파일 포인터와 관련된 파일에서
f가 가리키는 값에 대한 파일의 현재 위치를 설정합니다 포지션 FP
Ftell도 있었죠
Ftell은 처음부터 하우매니 바이트를 반환할
겁니다 파일 포인터에 근거해서요
네 현재 위치에서 바이트 상대 오프사이트죠
항상 시작이 아니라 현재 위치요
파일을 거꾸로 읽을 때는 초도를 사용하죠
Printf요
다른 기능보다 이게 더 유용할 거예요
이것은 화면에 output을 출력했죠.
형식 스펙티파이어와 쉼표로 분리된 다양한
인수의 개수를 사용하죠
네 Printf는 디버깅과 출력을 보여주는 데에 아주 유용합니다 C#
프로그램 안에서 꽤 많이 하는 거죠
제거해요
제거란 파일을 삭제하는 기능이죠
파일 이름이 필요해요
파일 포인터를 닫아야 해요
열면 안 돼요
한 파일의 이름을 다른 파일로 바꾸고 닫아야 합니다
파일은 열 수 없어요
Scanf는 Input을 프로무스로 디폴트로 읽어요
원한다면 다른 스트림의 입력값을 읽도록 바꿀 수 있어요
변환 함수도 있었는데 과정 전반에 걸쳐 논의했죠
이런 기능은 대부분 규격자유연맹에 있어요 h 파일, 헤더 파일이요
앳오프 기능도 있었죠
스트링을 띄우고 스트링으로 전달하는 거죠
기능이 있어요
정수로 변환하는 거죠
네 네 Atol은 문자열을 긴 것으로 변환하고 문자열을 전달하면
여러분이 변환하려는 반환 메서드를 반환합니다
아주 유용하죠
이걸 숫자로 변환하는 데 자주 사용하죠
환초는 롱 인트로 바뀌죠
더 많은 변환 함수를 위해 theStard lib
헤더 파일을 꼭 보세요
기억 기능도 있었죠 역동적 기억 할당 기능요
정말 중요한 거예요
동적 메모리 할당은 중요합니다 훨씬 효율적이거든요
필요한 테마모리만 사용하죠
고정 데이터는 생성하지 않아요
프로그램이 훨씬 더 유연해지죠
이 모든 기능은 표준 lib 안에서 제한되죠 H요
칼록에 대해 얘기했죠
네 네 칼록은 훌륭한 기능입니다 특정 크기를 할당할 수 있고
거기에 n을 곱할 수 있습니다
데이터 타입을 잘 지정할 수 있고 곱할 수도 있어요
캘록의 장점은 데이터를 초기화한다는 거죠
무명갈전갱이보다 더 좋아하죠
이제 메모리를 지울 수 있어요
모든 메모리가 그 위에서 생성될 거예요
훨씬 오래 걸리겠지만 메모리를 관리하는 건 프로그래머인
여러분께 달렸죠
네 사용이 끝난 후에도 항상 메모리를 사용하고 싶어하죠
다른 프로그램에선 메모리가 부족한 리소스거든요 우린 그 메모리를 사용하고
싶죠
굳은살이나 말록을 제거한 후에는 항상 무료로 콜하세요
말록은 기억을 창조하는 과정의 단순화예요
어떤 데이터도 입증할 수 없죠
사이즈를 매개 변수로 받아들여요
텅 빈 별을 돌려보냈죠
네 그래서 항상 캐스트를 해야 해요 굳은살과 마찬가지로 가리키는 유형의
메모리에 고정시켜야 하죠
안쪽을 가리키면 캐스트를 해야 해요
재개발 지역도 있어요
Realloc은 멋져요 실제로 기존 메모리에 추가할 수 있거든요
이렇게 하면 역동적일 수 있어요
데이터를 더 저장하고 싶으면 더 크게 만들 수도 있어요
레알록은 크기를 측정하죠
이전 메모리가 가리키던 모든 데이터를 유지하죠
새 메모리를 할당하고 유지합니다 기존 메모리에
추가할 수 있죠
아주 유용하죠
동적으로 메모리를 생성하는 데에요 모든 프로그램에서 유용할 겁니다
특히 포인터는 아주 중요하니까요 훨씬
효율적이죠
저희가 강의 내내 사용하는 헤더 파일을 이해하셔야
해요
이건 아주 중요한 거예요
네 네 다음 두어 강의에서 새로운 것에 관해 얘기할게요 많이
논의하진 못했지만요
하지만 이것들도 좀 중요해요
고마워요