Tuesday, June 05, 2007
C언어] int, double 숫자를 Argument로 입력 받기 예제; argc, argv 로
C프로그램 실행시에 명령행 옵션으로 즉 Argument 로 숫자를 입력받는 방법입니다. 숫자가 아닌 문자를 입력했을 때의 에러 처리도 합니다. (참고로 자바에서는 args 라는 배열로 아규먼트를 받습니다.)
소스 파일명: example.cpp
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
컴파일 및 실행 결과 화면:
참고: ▶▶ C언어] argc, argv 파라미터(인수; 매개변수) 사용 예제; main Function Parameter
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; // 그밖의 경우는 숫자임
}
#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>
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
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home