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진수의 문자열을 정수로 변환












Posted by 차희빈

차희빈

달력