실험3 [실험] #22 C언어 atoi함수를 &이랑 같이 쓰는 법 예제를 풀다가 atoi함수 안에 배열이 있는게 아니라 주소값이 들어가 있는걸 발견했습니다. 책에는 주소값 얘기는 없고 분명 문자배열이 숫자로 구성되어 있다면 이걸 인티저로 바꾸는 함수라는 설명 밖에 없었는데 갑자기 주소값?? 그래서 제가 실험해봤습니다. 배열 중간 주소값을 atoi에 할당 2. 배열 중간에 \n와 \0를 삽입하여 어디까지 출력되는지 보기 결과는 항상 같았습니다. 그러니까 책에 나오는 int i = atoi(str); 는 str 자체가 배열의 시작주소값을 의미하기에 배열의 시작부터 끝까지를 인티저로 바꾼다는 뜻이었고 int i = atoi(&str[2]); 라는 코드가 있다면 이건 str[2]부터 str배열의 끝까지를 인티저로 바꾼다는 뜻이었습니다. 그리고 문자열을 인식하는 기준은 \n 와.. 2022. 8. 7. [실험] #20 C언어 fgets gets scanf의 차이를 확실하게 알아보자 \0\n의 차이점도 같이 알아보자 우선 \0은 아스키 코드로 0 즉 (int)0이고 \n은 아스키 코드로 10 즉 (int)10입니다. 의례 말하는 널, NULL은 \0을 뜻하고 \0은 문자열의 끝을 알려주는 문자입니다. 대부분의 함수가 문자열을 처리할때 \0를 참조합니다. 그에 반해 \n는 개행문자 줄바꿈문자라고도 부르며 쉽게 이해하자면 우리가 엔터를 누르면 입력되는 문자입니다. \0와 \n를 이해했다면 이제 fgets, gets, scanf에서 \n과 \0이 어떻게 기능하는지 알 수 있습니다. 먼저 scanf는 엔터(\n)전까지 읽어들입니다. 그리고 자동으로 문자열 제일 끝에 \0을 붙여준다. (엔터 전!!까지 읽는다는게 매우 중요한 개념입니다.) gets는 엔터(\n)를 저장합니다. 그런데 자동으로 엔터(\n)를 \0로 바꿉니다. .. 2022. 8. 7. [실험] #19 C언어 strncpy, strncat와 \0, \n 대체 어디부터 어디까지 복사하는거야! strncpy와 strncat을 단독으로 사용할때도 뭐가 뭔지 모르게 복사되는데 문자열을 선언하고 복사하는 것이 아니라 입력함수로 입력받고 출력할 때도 아 이거 뭐가 어떻게 돌아가는지 모르겠다 싶으시죠? 그건 \0와 \n에 대한 개념이 제대로 정립되어있지 않아서 그렇습니다. scant, gets, fgets와 \0, \n에 대한 개념은 아래 링크를 참조해주세요! [실험] #20 C언어 fgets gets scanf의 차이를 확실하게 알아보자 \0\n의 차이점도 같이 알아보자 (tistory.com) strncpy()함수와 strncat()함수. strncpy()함수는 단순하게 딱 말한 만큼만 복사합니다. 그러므로 범위 안에 \0을 포함하지 않고 있다면 직접 \0를 넣어줘야 합니다. good이라는 문자열이.. 2022. 8. 7. 이전 1 다음 반응형