본문 바로가기
코스웨어/16년 스마트컨트롤러

20160407_장진웅_업무일지_로봇제어_시리얼제어4

by 알 수 없는 사용자 2016. 4. 11.
728x90
반응형


 #include <stdio.h>

 int main(void)
 {
     int iNum1=1;
     char str[4];
     int iNum2=2;

     printf("iNum1 출력: %d \n", iNum1);
     printf("str 출력: %d \n", str[4]);
     printf("iNum2 출력: %d \n", iNum2);

     printf("iNum1 주소 출력: %p \n", &iNum1);
     printf("str 주소 출력: %p \n", &str);
     printf("iNum2 주소 출력: %p \n", &iNum2);

     scanf("%s", str);
     printf("[%s] \n", str);


     printf("iNum1: %d \n", iNum1);
     printf("iNum2: %d \n", iNum2);

     return 0;
 }

char str[4];

입력 -> [1] 출력 -> 1, 입력 -> [11] 출력 -> 1, 입력 -> [111] 출력 -> 1, 입력 -> [1111] 출력 -> 0, 입력 -> [11111] 출력 -> 49(1의 ASCII code),
입력 -> [111111] 출력 -> 12593(Decimal, 3131 Hexa)

즉, 배열에 |1|1|1|\0 4칸을 준 상태에 마지막은 Null(\0) 값이 있었다. 이 상태에서 추가로 1을 더하게 되면 |1|1|1|1|\0 이렇게 NULL 값이 나오게 된다. 그래서 0이 출력된다. 그리고 |1|1|1|1|1 이렇게 ASCII코드 값(49) 1이 출력된다. 또 12593은 1의 Hexa 값을 10진수로 변환값이다.


열혈 C프로그래밍(gets, fgets) -> 해킹 때문에 fgets를 사용하는 것을 권장한다.


DOS창에 입력을 하게 되면 엔터 치기 전 입력된 값은 입력버퍼에 위치하게 된다.


열혈 C프로그래밍(444 page) atoi 예제. 문자열 123을 숫자 123으로 만들기.

 #include <stdio.h>

 int main(void)
 {
     char A[]="123";
     int iNum;

     iNum=(A[0]-'0')*100 + (A[1]-'0')*10 + (A[2]-'0');
     printf("%d \n", iNum);
     return 0;
 }


728x90