【 C 언어 】#65 문자열을 반대로 뒤집기 strrev()

Language/C & C++ 2019. 1. 3. 14:20 Posted by 엑소더스팩토리
반응형

【 C 언어 #65 문자열을 반대로 뒤집기 strrev()

 

 strrev() 함수는 입력받은 반대로 뒤집어 주는 함수이다. 


▶ 문제1  : 문자열을 입력 받게 하고 입력 받은 문자열의 순서를 뒤집어서 표시하는 프로그램을 작성하라. 


▶ 실행 결과 :

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



▶ 포인트 


- strrev() 함수 원형 :  char* strrev(char* string);

  

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

- 대문자 이외의 소문자나 숫자 기타 특수 문자 등은 변환되지 않는다.


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

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


▶ 프로그램 설명 : 

- strlen(string) == 0) break;  는 입력된 문자가 없을 경우 do 문을 빠져 나오게 된다. 

strrev (string) 입력 받은 문자들을 배열에 저장 시키고 이를 반대의 선서대로 출력표시 해주는 함수 있다. 

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


▶ 소스코드 다운로드 :  

65 문자열을 반대로 뒤집기strrev().cpp



반응형
반응형

【 C 언어 #64 문자열을 소문자로 변환하기( strlwr())

 

 strlwr() 함수는 입력받은 문자열에서 대문자를 소문자로 변환해주는 함수이다. 


▶ 문제1  : 문자열을 입력 받게 하고 입력 받은 문자열에서 대문자를 소문자로 치환하도록 하는 프로그램을 작성하라. 


▶ 실행 결과 :

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



▶ 포인트 


- strlwr() 함수 원형 :  char* strlwr(char* string);

  

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

- 대문자 이외의 소문자나 숫자 기타 특수 문자 등은 변환되지 않는다.


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

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


▶ 프로그램 설명 : 

- strlen(string) == 0) break;  는 입력된 문자가 없을 경우 do 문을 빠져 나오게 된다. 

strlwr (string) 입력 받은 문자 중에서 영문자 중 대문자만 모두 소문자로 변환한다.  영문자를 제외한 문자는 그대로 출력한다. 

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


▶ 소스코드 다운로드 :  

64 문자열을 소문자로 변환하기strlwr().cpp



반응형
반응형

【 C 언어 #62 문자열의 일부분을 특수문자로 채워넣기 ( strnset())

 

 strnset() 함수는 입력받은 문자열 중에 일부분을 특수문자 등으로 채워 줄 수 있는 함수이다. 일반적으로 정보보호를 위한 아이디나 비번의 일부를 가리는 형태로 사용이 가능하다. 



▶ 문제1  : 문자열을 입력 받게 하고 입력 받은 문자열 중 4번째 문자 까지를 별표(*)로 바꾸는 프로그램을 작성하라. 


▶ 실행 결과 :

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



▶ 포인트 


- strset() 함수 원형 :  char* strset(char* string, int c, unsigned int count);

  

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


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

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


▶ 프로그램 설명 : 

- strlen(string) == 0) break;  는 입력된 문자가 없을 경우 do 문을 빠져 나오도록 하였다. 

strnset (string, '*' , 4) 채울 문자는 '*' 이며, 앞에서 부터 4자리까지 채우도록 하였다. 

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


▶ 소스코드 다운로드 :  

62문자열을 특정 문자로 채워넣기.cpp



반응형
반응형

【 C 언어 】 #61 문자열을 특정문자로 채워넣기 strset()함수사용

 

 strset() 함수는 입력받은 문자열 중에 특정위치에 있는 문자를 출력할 수 있도록 해주는 기능을 한다. 이전에 검색한 위치를 저장할 수 있기 때문에 공백을 인지해서 문장을 구분 짓는 코드를 작성해보자.



▶ 문제1  : 문자열을 입력 받게 하고 입력 받은 문자열을 그대로 출력 한 다음, 문자열 중에 첫 번째 문자열을 그 아래 줄에 입력한 문자열 길이만큼 출력 하도록 하라. 


▶ 실행 결과 :

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



▶ 포인트 


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

  

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


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

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


▶ 프로그램 설명 : 

- strset(string, string[0])  함수에서,  string은 채울 문자이며, string[0] 배열의 첫 번째 문자로 채우라는 의미가 된다. 만약 세 번째 문자로 채우기를 한다면, string[2] 로 변경하면 된다. 


- if (strlen(string) == 0) break;  만약 입력문자가 없을 경우 프로그램을 종료 한다. 


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


▶ 소스코드 다운로드 :  


61문자열을 특정 문자로 채워넣기.cpp



반응형
반응형

【 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 언어 】#46 매크로 (macro) 이해하기

Language/C & C++ 2018. 5. 15. 10:39 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #46 매크로 (macro) 이해하기



 매크로란? 자주 사용하는 여러개의 명령어를 묶어 하나의 새로운 명령어로 만드는 방법을 말한다.  따라서, 매크로를 이용하여 함수를 사용하지 않고도 간단한 함수의 기능을 이용할 수 있다.  #define 문을 이용하며, 주로 번잡한 문장을 단순화하기 위해 사용한다.


▶ 문제  : 매크로를 정의하여 두 수의 최대값(MAX) 과 최소값(MIM) 값을 화면에 출력 하시오.


▶ 실행 결과 :

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




▶ 포인트 


- C언어에서 3항 연산자를 이용해서 macro 기능을 사용해본다.

- 3항연산자  A ? B : C    → A가 참이면 B,  거짓이면 C  




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

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




▶ 프로그램 설명 


- a > b ? a : b →   a가 b보다 크면(참이면)   a 값,  아니면 b값
- a < b ? a : b →   a가 b보다 작으면(참이면) a 값,  아니면 b값

- Max(a,b)  라고 선언할 경우 a,b 는 본문에서 사용되는 변수의 인수(인자) 역할을 한다.  


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


▶ 소스코드 다운로드 :  


46 macro 이해하기.cpp


반응형
반응형

【 C 언어 】 #45 <#include 문>으로 헤더파일을 선언해보자



 프로그램을 작성하다 보면 화면으로 출력해주는 'printf' 문과 같은 내장함수 들을 사용하게 된다. 이러한 함수들은 <stdio.h> 라는 기본 입출력에 해당하는 헤더 파일에 정의 되어 있고 이를 이용하기 위해서는 #include문으로 선언을 해주어야 한다.  만약 그렇지 않고 자신이 직접 모든 모듈을 다 작성하게 되면 시간이 많이 걸릴 것이며 프로그램의 효율성이 떨어지게 된다. 


▶ 문제  : 키보드로 문자 하나를 입력 받는 프로그램을 작성하되, 키보드로 부터 문자를 입력받을 수 있는 getch() 함수를 이용하라. getch()함수는 채conio.h 헤더 파일에 포함되어 있으며 #include문으로 선언해주면 프로그램내에서 사용이 가능하다. 


▶ 실행 결과 :


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




▶ 포인트 


- printf(), scanf(), getch() 함수 등을 사용하기 위해서는 함수내용이 포함된 헤더파일을 선언해야 프로그램내에서 사용이 가능하다.


- <stdio.h> : printf(), scanf()과 같은 입출력과 관련된 가장 기본이되는 함수의 집합인 헤더파일


- <conio.h> : 키보드와 같은 콘솔 입출력 장치와 관련된 함수들을 모아 놓은 헤더파일.

 [ 관련 함수 소개 ]

  → kbhit     : 키보드가 눌렸는지 확인

  → getch    : 콘솔에서 키보드 입력으로 한 개의 키 입력을 받음, (echo 없음)

  → getche   : 콘솔에서 키보드 입력으로 한 개의 키 입력을 받음, (echo 있음:타이핑한 키가 화면에 표시 됨)

  → putch     : 콘솔에 문자 하나를 출력  ( putchar 와 같음)

  → cputs    :  콘솔에 문자열을 출력

  → cprintf   :  포맷을 사용해서 콘손에 문자열을 출력

  → ungetch : 키보드 버퍼로 문자 한 개를 넣음

  → cgets     :  콘솔로 부터 문자열을 직접 입력 받음

  → gscanf   :  콘솔로 부터 포맷팅 된 입력을 받음


- #include <파일명>   & #include "파일명"  의 차이점  

  1. #include <파일명> : C의 표준 라이브러리 및 본래의 설치된 경로를 사용함을 의미

  2. #include "파일명"  : 사용자 정의 헤더파일을 먼저 검색후(컴파일 되고 있는 파일 위치) 표준라이브러리(본래 경로) 검색 함


- #include "..\..\include\test.h"    와 같이 헤더파일의 특정 경로 지정 가능


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

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


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



▶ 소스코드 다운로드 :  

45 #include 문으로 헤더파일을 선언해보자.cpp




반응형

【 C 언어 】#44 전역변수-지역변수 이해하기

Language/C & C++ 2018. 5. 14. 11:40 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #44 전역변수-지역변수 이해하기



 같은 변수명을 전역변수와 지역변수로 각각 선언하면서 초기값을 지정하게 되면, 변수가 사용되는 위치에 따라 값이 달라 질 수 있다. 지역변수와 전역변수가 이용 되는 범위에 대해 이해해보자.


▶ 문제  : int x를 전역변수와 지역변수로 각각 선언하고 초기값을 전역에 100, 메인함수 내에서 지역변수 초기값으로 50을 주고 출력하고, 서부루틴 함수 2개를 만들어 하나는 전달 인수값 200을 주어 출력하고, 하나는 전역변수 값을 출력하도록 하도록 한다. 


▶ 실행 결과 :


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




▶ 포인트 


- 통상적으로 전역변수명과 지역변수명을 같게 하여 작성하지 않으나, 필요한 경우도 있다.

- 변수 선언명을 각각, 지역변수 display_Localx(int x), 전역변수 display_Globalx(void) 로 선언한다.

- 지역변수는 메인 함수 내에서 전역변수 보다 우선순위가 높다.

- 함수 내에서 선언된 지역변수는 해당 함수 내에서만 사용된다. 따라서 다른 함수에서 사용하려면 다시 선언을 해주거나, 전역변수로 선언해야 한다.

- 동일한 변수 명이 전역과 지역함수에서 사용 될 경우, 초기값을 주어야 한다.   그렇지 않으면 쓰레기값(garbage)으로 초기화 될 수 있다.



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

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


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



▶ 소스코드 다운로드 :  


44 전역변수 지역변수 이해하기.cpp



반응형