C++ 문자열 입출력 함수

2014.06.14 09:42

엘카 조회 수:442

참고 문서  
문자열 입력함수 : gets( ) 
- 색인 없이 문자 배열의 이름으로 함수를 호출한다. 
- gets( ) 함수는 사용자가 <Enter>키를 입력할 때까지 (개행문자가 나타날 때까지)  
  문자들을 읽으며, 이 문자들은 포인터가 가리키는 배열에 저장된다. 
- gets( ) 함수는 함수의 수행이 성공하면 입력된 문자 배열의 시작 주소를 가지는  
  포인터를 반환하며, 에러가 발생하면 null 포인터를 반환한다. 
char *gets(char *string);  /* 문자열 입력 함수 */ 
int  puts(char *string);   /* 문자열 출력 함수 */ 

※  이 함수들은 <stdio.h> 헤더 파일을 사용한다. 


문자열 출력함수 : puts( ) 
- puts( ) 함수는 string이 가리키는 문자열을 화면에 출력하며, 자동으로 줄 바꿈('\n')  
  기능을 포함한다. 
- puts( ) 함수는 함수의 수행이 성공하면 양수를 반환하고, 에러가 발생하면 EOF(-1)를  
  반환한다. 


 #include <stdio.h> 
 
int main(void) 
{ 
   int i; 
   char name[15]=""; 
 
   printf("%s , %p \n", name, name);  
   /* 메모리에 저장된 내용이 없음을 확인한다. */ 
   printf("input string ? "); 
   scanf("%s", name);              /* 문자열 입력 */ 
   printf("name : %s \n", name);   /* 문자열 출력 */ 
 
   return 0; 
} 



scanf( ) 함수와 gets( ) 함수의 차이 
     - scanf( ) 함수는 단어 입력 함수이기 때문에 공백을 포함하지 않는 문자열  
        입력일 경우에만 사용한다. 
      - scanf( ) 와 gets( ) 함수는 배열의 경계를 검사하지 않기 때문에 함수와 함께 사용된  
        배열이 저장할 수 있는 문자보다 더 많은 문자를 입력하는 것을 방지하지 못한다. 
 #include <stdio.h> 
 
int main(void) 
{ 
   int i; 
   char name[15]=""; 
   printf("%s , %p \n", name, name);  
     /* 메모리에 저장된 내용이 없음을 확인 */ 
   printf("input string ? "); 
   /* scanf("%s", name); */ 
   gets(name);    /* 문자열 입력 */ 
   printf("name : %s \n", name);  /* 문자열 출력 */ 
   puts(name);    /* 문자열 출력 */ 
   return 0; 
} 



fgets( ) 함수는 세 번째 인수의 장치(스트림)에서 두 번째 인수로 지정된 수 만큼의 문자들을  

   읽어 첫 번째 인수로 지정된 포인터(주소)가 가리키는 위치에 저장한다. 

#include <stdio.h> 
 
int main(void) 
{ 
   int i; 
   char name[15]=""; 
   printf("%s , %p \n", name, name); 
 
   printf("input string ? "); 
   /* scanf("%s", name); 
      gets(name);         */ 
   fgets(name, 15, stdin);         /* 문자열 입력 */ 
   printf("name : %s \n", name);   /* 문자열 출력 */ 
 
   return 0; 
} 



#include <stdio.h> 
int main(void) 
{ 
   int i; 
   char name[15]=""; 
   printf("%s , %p \n", name, name); 
   printf("input string ? "); 
   gets(name); 
   printf("name : %s \n", name); 
 
   for(i=0; name[i]!='\0'; i++) 
    printf("%d, %c, %p \n", name[i], name[i], &name[i]); 
   return 0; 
} 

번호 제목 날짜 조회 수
43 구조체 포인터 2014.06.15 931
42 구조체의 선언과 데이터 입·출력 2014.06.15 3084
41 함수 포인터 2014.06.15 447
40 배열과 포인터 2014.06.15 406
39 포인터 연산 2014.06.15 384
38 포인터 변수 2014.06.15 414
37 데이터 정렬 2014.06.15 424
36 배열 초기화 2014.06.14 630
35 2차원 배열 2014.06.14 670
34 문자열 처리 함수 2014.06.14 412
» 문자열 입출력 함수 2014.06.14 442
32 접근 수정자 2014.06.14 824
31 전역 변수 2014.06.14 308
30 지역 변수(local variable) 2014.06.14 295
29 변수와 메모리 저장 위치 2014.06.14 428
28 비트 연산자 2014.06.14 288
27 관계 연산자와 논리 연산자 2014.06.14 472
26 증감 연산자 2014.06.14 319
25 printf() 함수의 형식 지정자 2014.06.14 7522
24 열거 형 변수의 이해 2014.06.14 465