C에서 string 처리..
글쓴이: strongspirit / 작성시간: 목, 2004/12/30 - 6:42오후
안녕하세요.
이번 방학때 C를 공부하고 있습니다.
문제를 풀고 있는데
문제의 내용은 command line argument로
숫자를 받아서 적절히 어떤 처리를 하는 것입니다.
적절한 어떤 처리같은 경우 간단히 할 수 있는데
문제는 command line argument를 숫자화 시키는데
있었습니다.
java같은 경우에는 간단히 할 수 있는데
C에서는 쉽지가 않더군요.
제가 처리한 방법은 argv[1]을 strcpy()를 사용하여
char 배열에 복사한 뒤 처리하는 방법이였습니다.
즉 command line argument로 1234를 받을 경우에
일단 1이면 숫자 1을 return 하는 식의 function을 하나 두고
차례대로 1x10^3+... 이런식으로 풀어나갔습니다.
혹시 다른 방법은 없는지요?
그럼 즐거운 하루 되세요.
Forums:
atoi()라는 함수를 참고하세요[code:1]#include
atoi()라는 함수를 참고하세요
strtol()함수가 더 보안에 안정적이랍니다.
strtol()함수가 더 보안에 안정적이랍니다.
남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.
만사 다 귀찮은데 sscanf는 어떻습니까?[code:1]in
만사 다 귀찮은데 sscanf는 어떻습니까?
시간남으시다면 직접 구현해보세요.C에서 문자열은 끝이 NULL(0
시간남으시다면 직접 구현해보세요.
C에서 문자열은 끝이 NULL(0)로 끝나는 ascii 코드의 일차원 배열입니다. 숫자라면 그 값이 0x30-0x39 사이겠군요.
Written By the Black Knight of Destruction
Re: C에서 string 처리..
C가 더쉬워요.
받아서 출력하는것 간단히는
int main( int argc, char **argv )
{
printf( "%d\n", atoi( argv[1] ));
return 0;
}
이죠.
----------------------------------------------------------------------------
[quote="흑기사"]숫자라면 그 값이 0x30-0x39 사이겠군요.[
<ctype.h>의 isdigit를 쓰는 것이 좋습니다. magic number는 언제나 피하는 것이 좋습니다.
한가지 흥미로운 사실을 덧붙이자면
C에서 사용되는 character set은 0-9까지는 연속적이어야 하지만 영어 대문자 소문자의 배치순서는 어떻게 되어도 상관이 없습니다. 실제로 EBCDIC란 character set에서는 a-z가 연속적이지 않습니다.
http://www.dynamoo.com/technical/ebcdic.htm
http://www.dynamoo.com/technical/ascii-ebcdic.htm
물론 일반적인 프로그래머가 ASCII 이외의 character set을 마주칠 일은 거의 없습니다. 하지만 미래에도 얼마든지 UCS2나 UCS4같은 전혀 다른 character set으로 바뀔 수 있다는 점을 생각해 볼 때, 그리고 자신이 짠 코드가 의외로 수십년간 그대로 살아 남을 수 있다는 점을 생각해 볼 때 isdigit 등의 함수 사용을 적극 권장하는 바입니다.
댓글 달기