컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post C언어] scanf 함수로, 문자열/정수/실수 입력 받기; scanf Function In...파일 개수 세기 도스 명령어; File Counter DOS Command매스매티카] 허수 단위 i 입력 방법; Mathematica IMAGINARY UNIT I...매스매티카] 루트 근사값, 제곱근 구하기 함수 사용법; Mathematica Square ...Java 자바] 정수 숫자 입력 받기, 16진수 헥사 입력; Input Hex Int Nu...Java 자바] 실수 입력 받기, 키보드로, 에러 처리 루프; Input Float Num...동영상 비디오 파일 포맷 확장자 종류 설명, Movie File ExtensionC에서 printf 함수로, double, float, int, unsigned int 출...C언어] switch 문 (스위치) 사용법 예제; switch-case-default St...매스매티카 팁] 수식을, Shift-Enter키 대신 쉽게 입력하는 법; Mathemati...

C언어] gets, fgets 함수로, 키보드 문자(문자열) 입력 받기; String Input

Friday, March 23, 2007

gets 는 입력받는 문자열 길이를 제한할 수 없어서 보안에 취약하므로.
fgets() 함수를 사용해야 합니다.

fgets() 는 텍스트 파일을 1행씩 읽을 때 사용하지만, 표준입력 쉽게 말해서 키보드 입력도 일종의 "가상 파일"이기에
stdin 이라는 이름을 지정하면, 키보드를 파일 삼아 읽을 수 있습니다.


사용자 문자열 입력 예제 소스


소스 파일명: example.cpp
#include <stdio.h>

int main(void) {

  // 끝의 "+ 1" 은 null 문자 1개의 길이
  // 실제는 총50바이트의 문자열
  char s[50 + 1];

  printf("아무 문자열이나 입력하세요: ");
  fgets(s, sizeof(s), stdin);
  printf("방금 입력받은 문자열: %s\n", s);


  return 0;
}



컴파일 및 실행 결과 화면:
D:\Z>cl /nologo example.cpp && example.exe
example.cpp
아무 문자열이나 입력하세요: eehwhwh
방금 입력받은 문자열: eehwhwh


D:\Z>cl /nologo example.cpp && example.exe
example.cpp
아무 문자열이나 입력하세요: egegeegegeegegeggggggggggggggggggggggggggggggggggggg
ggggggggggggggggggggggggggggggggggggggggggggggggggg
방금 입력받은 문자열: egegeegegeegegeggggggggggggggggggggggggggggggggggg

D:\Z>






fgets 개행문자 없이


위의 소스의 경우에는 입력받은 문자열 끝에 개행문자가 붙어 있습니다.

이 소스는 그 개행문자를 지웁니다.

#include <stdio.h>
#include <string.h> // strlen()

int main(void) {

  // 끝의 개행문자 2개의 공간 포함
  // 실제는 총50바이트의 문자열
  char s[50 + 2];

  printf("아무 문자열이나 입력하세요: ");
  fgets(s, sizeof(s), stdin);

  // fgets 는 개행문자를 붙이기에
  // 개행문자를 제거해야 함
  s[strlen(s)-1] = '\0';

  printf("방금 입력받은 문자열: <%s>\n", s);


  return 0;
}




0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top