1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <unistd.h> #include <assert.h> #include <fcntl.h> int main(int argc, char **argv) // char *argv[] == char **argv { int fd; unsigned char data[7] = {0,}; for(int i=0; i<7; i++) data[i]=*(argv[1]+i)-'0'; //data[i]=argv[1][i]-'0'; fd = open("/dev/m2_led", O_WRONLY); assert( fd >= 0); write(fd, data, 7); close(fd); return 0; } |
argc에는 인자가 2개들어있다
0에는 ./testLed
1에는 1010100
2에는 NULL
argv[1]에는 문자가 들어오며 문자'0'을 뺌으로써 상수로 변경해준다.
argy[1][i]에서 i를 증가시키면서 배열대 배열 입력이 안되는것을 for문으로 가능하게 해준다.
추가로 인자를 추가해서 사용할수있으며 main 안에서 조건에따라 인자를 출력할수 있다.
그렇게 된다면 argc의 인자 값 늘어나게되며 argv[X] 에서 (X는 인자의수-1) 가되며 인자를 골라 X의 값을 설정한다.
./testLed AAA BBB CCC
argc 4
argv [0] -> ./test
[1] -> AAA
[2] -> BBB
[3] -> CCC
PS 함수이름을 알고있다면 man 함수이름 을 입력한다면
헤더파일과 사용법을 알수있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <unistd.h> #include <assert.h> #include <fcntl.h> int main(int argc, char **argv) // char *argv[] == char **argv { int fd; int a; a=strtol(argv[1], NULL,16); char data; fd = open("/dev/m2_led", O_WRONLY); assert( fd >= 0); data=(unsigned char) (a & 0x7F); write(fd,& data, 1); close(fd); return 0; } |
16진수의 문자열을 정수로 변환
'Study > 리눅스' 카테고리의 다른 글
| 리눅스로 c언어 컴파일하기 Linked List (2) (0) | 2014.09.19 |
|---|---|
| 리눅스로 c언어 컴파일하기 Linked List (1) (0) | 2014.09.18 |
| 리눅스 c언어로 컴파일하기 파일 입출력 (1) (0) | 2014.09.18 |
| 리눅스로 c언어 컴파일하기 arm-linux-gcc (1) (0) | 2014.09.18 |
| 리눅스 c언어로 컴파일하기 Makefile (0) | 2014.09.18 |
