반응형

【 C 언어 】 #60 문자열을 구분하기 [strtok()함수사용]

 

 strtok() 함수는 이전에 검색한 위치를 저장할 수 있기 때문에 공백을 인지해서 문장을 구분 짓는 코드를 작성해보자.



▶ 문제1  : 영어 문장(문자열)을 입력받고 공백으로 구분하여 화면에 출력하라. 


▶ 실행 결과 :

(이미지 클릭, 확대해서 보세요)



▶ 포인트 


- strtok() 함수 원형 :  char* strtok(char* strToken, const char* strDelimit)


- 함수 사용을 위해 strtok() 함수가 포함 되어 있는 <string.h > 헤더파일을 선언하라.


▶ 프로그램 (답안 예시) : 

(이미지 클릭, 확대해서 보세요)


▶ 프로그램 설명 : 

- strtok() 함수는 내부적으로 이전에 검색한 위치를 저장하고 있다. 따라서 string이 아닌 NULL을 strtok()함수에 넘겨 주면, 검색된 다음 위치부터 자동으로 검색하게 된다.

token = strtok(string,TOKEN);  TOKEN을 " "(공백) 으로 define(정의) 했으므로 공백이 있는지 찾는다. 만약 공백을 찾은 경우, 공백이 있는 자리에 NULL값을 넣은 후 문자열의 선두 번지를 반환 한다.  만약 공백이 없는 경우, 문자 배열 변수 string의 선두 번지를 반환한다.


while(token != NULL)  반환값이 NULL인지 비교한다. NULL이 아니면 token 값을 출력(pus)하고 NULL 이면 while문을 종료 한다.


token = strtok(NULL, TOKEN);  앞의 코딩 문 token = strtok(string,TOKEN)에서 공백을 찾은, 다음 번지부터 다시 공백을 찾는데, 공백이 있을 경우 NULL값을 넣은 후 다음 문자열의 선두 번지를 반환한다. 

- strtok() 함수는 이전에 검색한 위치를 저장하고 있기 때문에 string이 아닌 NULL 값을 strtok()함수에 넘겨주면, 검색된 다음 위치부터 자동으로 검색하게 된다. 


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


▶ 소스코드 다운로드 :  


60 문자열을 구분하기 strtok() 함수 사용하기.cpp



반응형
반응형

【 C 언어 】 #59 문자열 중에서 특정문자만 검색하기 ( strchr 함수 사용하기)

 

 strchr() 함수를 사용하면 입력받은 문자열 중에 특정 문자 하나가 있는지 검색할 수 있다. 



▶ 문제1  : 영어 문장(문자열)을 입력받고 문자열 중에서 'u' 라는 문자가 있는지 검색하여 있으면 찾았다는 문장을 출력하고, 없으면 없다는 메세지를 출력하라. 'u' 문자의 위치값도 표시하라


▶ 실행 결과 :

(이미지 클릭, 확대해서 보세요)



▶ 포인트 


- strchr() 함수 원형 :  char* strchr(const char* string, int c);


- 함수 사용을 위해 strstr() 함수가 포함 되어 있는 <string.h > 헤더파일을 선언하라.


▶ 프로그램 (답안 예시) : 

(이미지 클릭, 확대해서 보세요)


▶ 프로그램 설명 : 

- strstr() 함수는 문자열 뿐 아니라 단일 문자도 검색이 가능하다

- char *ret   :  strchr()함수가 반환하는 문자형 포인터 값을 저장할 변수를 정의한다. 

- 문자열을 배열 변수 string[100]에 입력받는다. 

- #define FIND_CHR 'u'   :   u 를 대체하여 FIND_CHR로 선언한다

- ret = strchr(string, FIND_CHR   :  입력받은 문자열 중에 'u' 가 있는지 검색하여 찾으면 그 위치의 메로리(번지) 값을 반환(저장) 한다.  없으면 NULL포인터를 반환


- printf("%d 위치에서...., ret-string+1)     :  문자열 중에서 'u'값이 검색된 경우, 그 위치의 메모리 값(번지)에서 문자열 배열 변수 string의 메모리 값(번지)를 빼면 'u'문자의 위치 값을 얻을 수 있다. 단, ...0 번지의 경우 계산이 되지 않기에 정확한 순서값을 얻기 위해 +1을 더해 준다.


- 프로그램에서 처럼 변수 'ret' 와 'string'의 메모리 값(번지)을 출력 해보면 좀더 명확히 이해 될 것이다.   


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


▶ 소스코드 다운로드 :  


59 문자열 검색하기 strchr() 함수 사용하기.exe



반응형
반응형

【 C 언어 】 #58 문자열 검색하기 ( strstr 함수 사용하기)

 

 strstr() 함수를 사용하여 입력받은 문자열 중에 "blue" 라는 글자가 있는지 검색하는 프로그래밍을 작성해보자.



▶ 문제1  : 영어 문장(문자열)을 입력받아 'blue' 라는 문자가 있는지 검색하여 없으면 없다는 메세지를 출력하고 다시 문장입력을 반복한다. 있다면 문장중 몇 번째에 위치해 있는지 표시한 후 프로그램을 종료 한다.


▶ 실행 결과 :

(이미지 클릭, 확대해서 보세요)



▶ 포인트 


- strstr() 함수 원형 :  char* strstr(const char* string, const char* strCharSet);


- strstr() 함수가 반환하는 문자형 포인터 값을 저장할 변수를 선언한다.


- 함수 사용을 위해 <string.h > 헤더파일을 선언하라.



▶ 프로그램 (답안 예시) : 

(이미지 클릭, 확대해서 보세요)



▶ 프로그램 설명 : 

- strstr() 함수는 문자열 뿐 아니라 단일 문자도 검색이 가능하다



++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


▶ 소스코드 다운로드 :  


58 문자열 검색하기 strstr() 함수 사용하기.cpp



반응형

【 C 언어 】 #34 변수의 메모리 번지 이해하기

Language/C & C++ 2018. 4. 17. 10:44 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #34 변수의 메모리 번지(주소) 이해하기



 변수가 정의 될 때는 변수 값을 저장할 메모리 공간(정수형 변수는 4바이트)을 확보하고 그 주소를 지정(기억)하게 된다.  프로그래밍이 처리 되는 과정에서 데이터가 저장된 메모리의 번지를 이용해서 값을 불러오거나 처리할 수 있게 된다. 


▶ 문제  : 변수 i =0 와 j =1 를 선언하고 초기값 0과 1을 준다. 각 변수가 지정된 메모리 번지를 출력하라.


▶ 포인트 

  printf() 함수를 이용해서 메모리 번지를 출력 할 수 있으며, (정수형)값을 나타내는 %d 대신 %p 를 사용하며, 변수의 메모리 번지를 넘겨주기 위한 '번지 지정 연산자(&)'를 사용하면 번지를 출력할 수 있다. 



▶ 프로그램 : 




▶ 실행 결과 :



▶ 보충설명 :


j는 0062FE48~0062FE4B ,  4바이트의 메모리 공간으로 지정 되어 있으며 시작번지가 0062FE48 이다.  여기에 데이터 1의 값이 저장되어 있다.


i는 0062FE4C~0062FE4F ,  4바이트의 메모리 공간으로 지정 되어 있으며 시작번지가 0062FE4C 이다.  여기에 데이터 0의 값이 저장되어 있다.


아래 변수와 메모리와의 관계 도표를 보면 쉽게 이해가 갈 것이다.



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



▶ 소스코드 다운로드 :  



반응형