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

 
Previous Post C언어] 문자열이 숫자인지 아닌지 여부 판단 함수; String Is Double니콘 렌즈 종류 목록, 니코르 망원 광각 등 리스트; Nikon Lens ListC언어] 문자열 앞뒤 공백 문자 제거, 스페이스 지우기 함수; trim, ltrim, rt...수학 공식의 느낌표 기호 의미; Math, Exclamation Mark망원경 효과 있는 카메라 망원렌즈 초점거리는? Telephoto Lens매스매티카] Do문 사용 예제, 반복문 루프; Mathematica Do Loop매스매티카] Table 명령/함수 사용 예제; Mathematica Table매스매티카] 랜덤 난수 리스트(배열) 만들기 명령어/함수; Mathematica Rando...애기번들이란? 니콘 애기번들 렌즈 실물 사진: Nikon 18-55mm Lens인물 사진 촬영에 적합한 단초점 렌즈 [단렌즈] 는? - Portrait Lens

C언어] int, double 숫자를 Argument로 입력 받기 예제; argc, argv 로

Tuesday, June 05, 2007

C프로그램 실행시에 명령행 옵션으로 즉 Argument 로 숫자를 입력받는 방법입니다. 숫자가 아닌 문자를 입력했을 때의 에러 처리도 합니다. (참고로 자바에서는 args 라는 배열로 아규먼트를 받습니다.)

Argument로, 실수 숫자 double 입력 받기


소스 파일명: example.cpp
#include <stdio.h>
#include <stdlib.h>  // exit()
#include <string.h>

int isStringDouble(char *s);


int main(int argc, char* argv[]) {

  // 옵션 지정하지 않았을 때 에러 출력하고 종료
  if (argc == 1) {
    fputs("에러! 옵션을 입력하지 않으셨군요...\n", stderr);
    exit(1);
  }

  // 문자열이 숫자로 구성되어 있는지 검사
  if (isStringDouble(argv[1])) {
    double d = atof(argv[1]); // 문자열을 실수 숫자로 변환

    // 입력받은 실수를 소수점 이하 3자리까지 출력
    printf("입력받은 실수: %.3f\n", d);
  }
  else {
    fputs("숫자가 아닙니다.\n", stderr);
  }

  return 0;
}




int isStringDouble(char *s) {
  size_t size = strlen(s);
  if (size == 0) return 0; // 0바이트 문자열은 숫자가 아님

  for (int i = 0; i < (int) size; i++) {
    if (s[i] == '.' || s[i] == '-' || s[i] == '+') continue;
    if (s[i] < '0' || s[i] > '9') return 0; // 알파벳 등이 있으면 숫자 아님
  }

  return 1; // 그밖의 경우는 숫자임
}




컴파일 및 실행 결과 화면:
D:\Z>cl example.cpp
example.cpp

D:\Z>example.exe
에러! 옵션을 입력하지 않으셨군요...

D:\Z>example.exe 123
입력받은 실수: 123.000

D:\Z>example.exe 0.5
입력받은 실수: 0.500

D:\Z>example.exe aaa
숫자가 아닙니다.

D:\Z>



참고: ▶▶ C언어] argc, argv 파라미터(인수; 매개변수) 사용 예제; main Function Parameter

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