반응형

【 C 언어 】 #57 strlen()함수를 이용하여 문자열 길이 구하기

 

 strlen() 함수를 이용하면 문자열의 길이를 쉽게 구할 수 있다. 문자열의 길이를 알고 있으면 여러 형태의 비교 처리가 가능하기 때문에 알아두면 유용할 것이다.



▶ 문제1  : 문자열을 입력받아 길이를 출력하는 프로그램을 작성하라.

 'Enter' 키를 누르면 프로그램을 종료하라. 


▶ 실행 결과 :


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



▶ 포인트 


- strlen() 함수 원형 :  unsigned int strlen(const char* string);


- 영문자 1개당 1바이트를 차지하며, 한글과 일본어는 한 글자당 2바이트를 찾이 한다.  예) Korea : 문자길이는 5,    한국 : 문자길이는 4


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



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

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



▶ 프로그램 설명 : 

- Enter 키가 입력 되면 널 문자'\n' 가 입력 되고 그 값은 '0'임으로 이를 가지고 루틴을 빠져나오면(break) 된다.



--------------------------------------------------------------------------------------------------------


▶ 문제2  : 문자열을 입력받아 길이를 출력하는 프로그램을 작성하되, 'Enter'키 또는 'exit'를 입력 하면 프로그램을 종료하라. (strcmp 함수 활용)



▶ 실행 결과 :

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


▶ 포인트 


- 위 프로그램을 기본으로 하여, 앞글에서 다루었던 strcmp() 함수를 참고하여 추가 한다. 


- 비교문에서 '||'  or 연산자를 이용하여 break; 처리를 같이 하면 간략해진다.


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



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

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



▶ 프로그램 설명 : 

- 문자열 변수 배열을 하나만 만들어서 널 값과 'exit' 비교 처리를 동시에 처리하는 것이 중요 하다. 


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


▶ 소스코드 다운로드 :  


57 strlen()함수로 문자열의 길이 구하기1.cpp

57 strlen()함수로 문자열의 길이 구하기2.cpp



반응형
반응형

【 C 언어 】 #56 문자열 연결 함수 strcat() 사용하기

 


 strcat() 함수를 사용하여 문자열을 결합 시키는 방법에 대해 알아본다.  문자열 배열 변수 A에 문자열 배열 변수 B의 내용을 붙여(추가해)주는 것으로 이해하면 쉽다.  따라서 두 문자의 내용이 모두 들어갈 수 있는 충분한 변수공간(버퍼)이 필요하며, 이에 따라 99 문자 까지 확보되는 배열변수로 선언한다. 


▶ 문제  : 앞 단어를 입력 하고 뒷 단어를 입력한다.  strcat() 함수를 사용하여 

- "앞 단어 + 뒷 단어" 한 결과를 출력하고,   

- '뒷 단어' 출력  후

- "뒷 단어 + 앞 단어" 한 결과를 출력하라.


▶ 실행 결과 :


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



▶ 포인트 


- strcat() 함수 원형 :  char* strcat(char* dest, const char*src);


- 충분한 버퍼의 변수 공간을 위해서는 99자 입력까지 가능한 문자열 배열을 선언한다.   (예, char string1[100] )


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





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

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



▶ 프로그램 설명 : 

- string2에 string1을 추가 하려 할 때, string1 변수의 값은 이미 '앞문자+뒷문자'의 추가된 값이 들어가 있다. 

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


▶ 소스코드 다운로드 :  


57 문자열 연결 함수 strcat() 사용하기.cpp



반응형
반응형

【 C 언어 】 #55 문자열 비교 함수 strcmp() 사용하기

 


 strcmp() 함수는 문자열의 아스키 값을 비교 할 수 있게 해주는 함수 이다. (대,소문자 구분하며, 만약 구분 하지 않고 비교하려면 _strcmp()함수를 사용한다)


▶ 문제  : strcmp() 함수를 사용하여 작성하고, 입력 받은 문자를 'exit'문자와 비교하여 아스키 값이 크면 '1'을 , 작으면 '-1'을 화면에 출력하라,  만약 'exit'를 입력하면 프로그램이 종료 되도록 하라.


▶ 실행 결과 :


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





▶ 포인트 


- strcmp() 함수 의 원형 :  int strcmp(const char* src1, const char* src2);


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


- 문자열을 대소문자 구분 없이 비교 하려면 _stricmp() 함수를 사용하라.




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

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


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


▶ 소스코드 다운로드 :  


56 문자열 비교 함수 사용하기.cpp



반응형
반응형

【 C 언어 】 #55 문자열 복사 strcpy() 사용자 정의 함수 만들기

 


 strcpy() 함수와 같은 문자열을 복사해주는 사용자 정의 함수를 만들어 봄으로서 C언어에서 자주 활용되는 포인터 등의 개념에 익숙해지도록 한다. 


▶ 문제  : "여름" 이라는 문자열을 복사하는 사용자 정의 함수(User_strcopy()) 를 작성하라.


▶ 실행 결과 :


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




▶ 포인트 


- strcpy() 함수 의 원형 :  char* strcpy(char* dest, const char* src);


-문자열을 부분적으로 복사하려면, strncpy() 함수를 사용하라. 


- 문자열이 NULL('0') 값인지 비교하고 값이 있을 경우 puts()를 이용해 출력한다.





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

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


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


▶ 소스코드 다운로드 :  


55 문자열 복사(strcpy())함수 만들기.cpp


반응형

【 C 언어 】 #54 문자열 복사(strcpy) 이해하기

Language/C & C++ 2018. 5. 28. 16:17 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #54 문자열 복사(strcpy) 이해하기

 


 문자열을 버퍼에 복사하여 사용하는 strcpy() 함수에 대해 이해함으로서 유용하게 자주 사용되는 C언어의 프로그래밍 형태를 이해할 수 있다.


▶ 문제  : "여름" 이라는 문자열을 복사하는 프로그램을 작성하라.


▶ 실행 결과 :


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



▶ 포인트 


- strcpy() 함수를 사용하기 위해서는 <string.h> 헤더 파일을 포함 해야 한다.


- strcpy() 함수 의 원형 :  char* strcpy(char* dest, const char* src);


-문자열을 부분적으로 복사하려면, strncpy() 함수를 사용하라.




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

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


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



▶ 소스코드 다운로드 :  


54 문자열 복사(strcpy()) 이해하기.cpp



반응형
반응형

【 C 언어 】 #53 puts() 사용하여 문자열 출력하기



 문자열 전용 출력 함수인 puts()에 대해 다루어 보고, 역시 문자열 출력이 가능한 printf()와의 차이점에 대해서도 설명하려 한다. 


▶ 문제 1 

 "봄", "여름", "가을", "겨울" 각각의 단어를 define문으로 정의 하고ㅔputs() 함수를 사용하여 화면에 출력 하시오.  (SPRING, SUMMER, AUTUMN, WINTER)

또한 여름을 summer,  가을을 autumn 으로 문자열 상수(const char*) 로 선언하여 함께 출력해보라.


▶ 실행 결과 :

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

▶ 포인트 

- puts() 함수의 원형   :  int puts(const char* string); 

- #define SPRING "봄"  ,  #define SUMMER "여름" ,  ....


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

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



▶ 코드 설명 :  

- const char* summer = "여름";  으로 정의 하여 사용하게 되면 프로그램 내에서는 변경이 불가 하다. 

- const char* autumn = AUTUMN;     처럼 기존 #define 문으로 정의 된 AUTUMN을 대입 선언할 수 도 있다.




----------------------------------------------------------------------------------------------------------


▶ 문제 2 

 위 프로그래밍 내용에서 printf() 문을 추가 사용하여 "봄", "여름", "가을", "겨울" 을 각각 출력하시오.  puts(), 와 printf()문의 차이를 확인하시오.


▶ 실행 결과 :

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



▶ 포인트 


[ puts() 함수와 printf() 함수와의 차이 ]


puts() 함수는 캐리지 리턴 이라고 하는 개행 문자('\n') , 즉 줄바꿈 명령어가 자동으로 기능한다.  이에 반해 printf()는 줄바꿈을 하려면 개행문자가 필요하다

- puts()는 문자열만 출력 가능하지만,  printf()는 문자열 뿐 아니라, %d, %f, %c, %s 등 정수, 실수, 문자, 문자열 등 다양한 출력이 가능하다)

- 따라서 printf()는 puts() 보다 리소스 자원을 많이 차지 하게 되고, 프로그램 실행속도에도 영향을 미치게 된다.  그러므로 필요한경우 puts()와 printf()를 적절히 구분해서 사용하면 된다. 



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

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



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



▶ 소스코드 다운로드 :  


문제 1,2 :  

52 puts() 사용하여 문자열 출력하기.cpp


반응형

【 C 언어 】 #52 gets() 사용하기

카테고리 없음 2018. 5. 23. 10:32 Posted by 엑소더스팩토리
반응형

【 C 언어 】 #52 gets() 사용하기



 문자열을 입력 받아 버퍼에 저장하는 gets() 함수를 사용해 보도록 하자.


▶ 문제  

 gets() 함수를 사용하여 키보드로 부터 아래와 같은 문자열을 입력받은 후, 문자열 중 't' 의 개수를 카운트하여 나타내시오.

  (문자열 : "My birthday is twenty fourths of January" )



▶ 실행 결과 :


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




▶ 포인트 


- gets() 함수를 사용하기 위해서는 stdio.h 헤더를 포함시켜야 한다.

- 문자열은 99개 까지만 입력받을 수 있고, 초과입력하면 오류가 발생한다.

- 입력 받은 문자열은 배열을 선언하여 저장하라 (ex, string[100] )

- 문자열 중 특정 문자('t')의 개수를 카운트 하는 루틴을 서브루틴으로 작성하라



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

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


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



▶ 소스코드 다운로드 :  


52 gets() 사용하기.cpp



반응형
반응형

【 프로세싱 언어 】 #13 Tweak(변수 조정) 기능 이용해 보기


 프로그래밍을 하다보면 프로그램 내에서 각종 변수 값의 수치를 변경해보며 테스트 해보는 상황을 자주 겪게 된다.  이때 단순한 수치값 하나를 바꾸더라도 다시 컴파일 및 실행을 하여야 바꾼 수치가 반영된 결과를 확인 할 수 있다. 여러번 수치를 변경 테스트 할 경우 상당히 번거로운 일이 아닐 수 없다. 하지만 프로세싱에서는 이러한 문제를 버추얼하게 깔끔하고 재미있게 해결해준다.  

그 기능이 바로 지금 소개할 Tweak 기능이다. 


▶ 문제 1 : 앞선 예제를 가지고 Tweak 기능을 테스트 해보자. 


▶ 실행 동영상


(전체화면으로 보면 보다 선명하게 보실 수 있어요)



▶ 포인트 
- 프로그램 작성후 메뉴에서 :  Sketch(스케치) 》 Tweak(변수조정하기) 를 클릭한다. 이때, 먼저 저장 하라는 메세지가 뜨는데, 저장후 다시 실행하도록 한다.



▶ 프로그램(code) : 





 ▶ 코드 설명 : 

   - slash 값을 변경하면 배경 사선의 기울기가 변한다.

   - for 문에서 i= -slash 처럼 -값으로 시작되는 이유는 만약, 양의 값으로 시작되면 사선이기 때문에 왼쪽 하단부에 사선이 그어지지 않는 공간이 생기기 때문이다. 



▶ 코드 다운로드 :

 sketch__12_line_width_slash.pde



반응형
반응형

【 C 언어 】 #43 데이터형에 따른 메모리 할당 크기 확인하기


 데이터 유형에 따라 메모리를 할당 받는 크기가 다르다. 예를 들어 정수형인 int는 4byte(1byte 는 8bit), char형은 1byte... 요즘 처럼 아두이노 등을 활용할 일이 많은 상황에서 작성 프로그램이 커질 경우, 데이터 유형에 따른 메모리 할당 크기를 파악하고 있으면, 변수 선언시, 비효과적으로 메모리를 찾이하는 것을 방지 할 수 있다. 


▶ 문제  :  데이터 유형에 따른, 다음 각 변수들을 선언하고 각각의 메모리 사이즈를 화면에 출력하라.  (출력할 유형 : int, char, short, long, float, double)


▶ 실행 결과 :


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



▶ 포인트 


- 데이터 유형에 따라 변수명을 선언한다. 

- 변수 유형에 따른 메모리 크기를 확인 할 수 있는 함수는 sizeof()  이다. (byte 단위)

- 위 6가지 외에도, 부호를 나타낼 수 있고 없고에 따른 unsigned 가 붙는 유형 등이 있다. 




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

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


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



▶ 소스코드 다운로드 :  


43 데이터형의 메모리 할당크기 확인하기.cpp



반응형

【 C 언어 】 #42 공용체 (union) 이해하기

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

【 C 언어 】 #42 공용체 (union) 이해하기



 공용체는 구조체와 선언 및 사용 방법이 매우 유사 하다.  구조체 처럼 서로 다른 데이터 유형을 하나로 묶어 사용할 수 있는 장점이 있으며, 구조체와의 차이점은 정의 된 변수들의 메모리 할당 방식에 차이가 있다. ( 변수가 할당 될 때 하나의 메모리 공간에 여러 변수들의 메모리가 공용으로 할당 되어 사용된다 )


▶ 문제  : int i, int j 를 공용체로 묶어 선언하고  i = 3을 대입 후 printf 문으로 i의 값을 출력하고 ,  j = 5  를 대입 후 printf 문으로 j의 값을 출력하고 난 후 ,  다시 i의 값을 출력해 보라. 

 (여러 타입의 변수를 공용체로 묶어 사용할 수 있으나 여기서는 int 타입만 사용하였다.  공용체 변수명 등은 임의로 정하라)


▶ 실행 결과 :


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



▶ 포인트 


- 공용체 또한 구조체와 마찬가지로 실제로 변수를 선언 하는 것은 아니며, 선언하는 변수 들의 틀(템플릿)을 만들어 주는 것에 불과 하다는 점을 기억하라.


- 공용체와 구조체의 차이점 :

 구조체의 경우 선언 하는 변수 만큼 메모리를 할당한다.  

 예) int i , char j , double k  라고 구조체로 묶어 선언 할 경우 

모두  4 byte (int) + 1 byte (char) + 8 byte (double) = 13 byte 의 메모리를 할 당하게 된다.   즉, 메모리 공간을 변수마다 각각 할당하여 사용함


 그러나 공용체는 함께 선언된 변수들을 하나의 메모리에 할당하게 된다. 

단, 이때 함게 선언된 변수들중 사이즈가 가장 큰 것을 기준으로 할당 하게 된다


 예) int i , char j , double k  라고 공용체로 묶어 선언 할 경우 

모두  4 byte (int) , 1 byte (char) , 8 byte (double) , 중 용량이 가장 큰 8 byte 를 기준으로 메모리를 할 당하게 된다.  따라서 위 프로그램의 실행결과를 보면 i = 3 이 입력 되었음에도 불구하고 j=5 가 입력 된 후에는 , (동일 번지의) 메모리를 공유하고 있던 i에도 5가 입력 되어 버린 것이다. 

즉, 메모리 공간을 공용체로 선언된 모든 변수들이 같이 사용함.


- 공용체는 과거 마이크로 보드 처럼 메모리 용량이 작아 프로그램의 제약이 많았던 상황에서 주로 사용되었으며, 메모리를 순차적으로 사용하면 되는 프로그램에서 주로 사용된 기법이었다.  




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

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


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



▶ 소스코드 다운로드 :  


42 공용체 (union) 이해하기.cpp




반응형