우분투에서 와이어샤크 run /usr/bin/dumpcap in child process: Permission Denied 에러

|

sudo dpkg-reconfigure wireshark-common
sudo adduser $USER wireshark

 

차례로 실행 후 재부팅.

신고
trackback 0 And comment 0

리눅스 커맨드

|

-apt-get

패키지 관리 명령어 도구.

sudo apt-get update        : /etc/apt/sources.list 를 참조해 여기서 가져올 패키지의 정보를 얻는다.
sudo apt-get upgrade      : 설치되어 있는 패키지를 새 버전으로 엡그레이드
sudo apt-get dist-upgrade    : 의존성 검사하며 설치
sudo apt-get 패키지 이름    : 설치
apt-get --reinstall install 패키지 이름     : 재설치
sudo apt-get remove 패키지 이름     : 설정파일 보존하면서 삭제
sudo apt-get --purge remove 패키지이름     : 설정파일까지 같이 지움
sudo apt-get source 패키지이름     : 소스코드 다운로드
sudo apt-get build-dep 패키지이름     : 위에서 받은 소스코드를 의존성 있게 빌드
sudo apt-cache search 패키지이름     : 패키지 검색
sudo apt-cache show     : 패키지 이름

apt를 이용해서 설치된 deb 패키지는 /var/cache/apt/archives/에 설치된다.

 

-su

우분투는 처음 설치 시 root 비밀번호를 설정하지 않는다.
따라서 sudo passwd root를 실행해 root 비밀번호를 설정해주면, su - 커맨드로 root로 접속할 수 있다. 

 

리눅스 설치된 바이너리 찾기 -> whereis 사용.

 

신고
trackback 0 And comment 0

printf

|

- int printf(conast char* format,...)

이 함수는 서식 문자에 맞춰 인자로 들어온 데이터를 모니터에 출력한다. 사용 예시는
printf("%s , %s","Hello","World");
앞의 " " 안에는 서식문자를 넣고, , 로 구분시킨 후 뒤에 변수나 문자열들을 나열해주면 된다. 앞의 %s에는 "Hello"가, 뒤에 %s는 "World"가 들어가게 된다. 주의할점은, 앞의 서식문자가 들어가는 " " 안에 ,나 공백을 넣어주면, 그 형태대로 출력하게 된다. 위에 예제에서는 , 가 들어가있기 때문에 모니터에는 Hello , World 로 출력된다. 마찬가지로 \n도 앞의 서식문자쪽에 넣어줄 수 있다.

 

 

format = 서식문자.

%d, %i   10진수 정수
%ld 부호있는 long 정수
%lld 부호있는 long long 정수

%x, %o  16진수 정수,8진수 정수.(10진수만 양수 표현 가능)

printf("0%o\n",017) , printf("0x%X\n",0x1F) 이런식으로 구분을 쉽게 하기 위해 앞에 표기를 위한 문자를 더 붙이기도 한다.
8진수는 앞에0을, 16진수는 앞에 0x를 붙인다.

%f, %lf   10진수 실수 (f는 float, lf는 double. scanf에서는 구분되지만 printf에서는 구분없이 %f로만 써도 좋다.)

(실수의 표현에서, .을 기준으로 왼쪽은 숫자 표현을 위한 전체 공간, 오른쪽은 소수점 이하 자릿수를 지정해줄 수 있다.
%.2f 면 소수점 이하 자릿수를 2자리로 한다는 뜻. %8.4f면 전체 공간은 8개, 소수점 이하 자리수는 4자리다.)

%Lf long double형 실수
%c   한 개의 문자           (char형에 아스키값을 넣고 %d로 뽑으면 정수가, %c로 뽑으면 문자가 나온다.)

%s   문자열
%u   부호없는 정수(양수만 표현 가능 - %d보다 두 배 넓은 출력 범위.)
%lu 부호 없는 long 정수
%llu 부호 없는 long long 정수
%e   e 표기법(지수 표기법)에 의한 실수

%E   E 표기법에 의한 실수(소문자,대문자 차이뿐임)
%Le long double 형 실수를 지수 표기법으로.
%g   소수점 이하 자리수(6자리)에 따라 6자리를 넘으면 %e로, 넘지 않으면 %f로.
%G   위와 같지만 %E 사용.
%%  %출력.
%ld  long형 10진수
%lx  long형 16진수
%lo  long형 8진수
%a %A 실수를 16진법으로 표기(소문자,대문자)
%p 포인터의 메모리 주소

 

서식 지정자에 다양한 플래그나 폭,정밀도,길이를 조합해서 사용할 수 있다.

포맷은 다음과 같다 : %[플래그][폭][.정밀도][길이]서식지정자


printf("%6d\n",20);
이렇게 하면 폭이 6칸으로 지정된다. 오른쪽부터 20을 채우니 앞에는 공백이 4칸 생긴다.

폭과 플래그를 함께 사용하면

printf("%06d\n",20)

출력 폭을 6칸으로 하고, 남는 공간을 0으로 채우게 되므로 000020이 출력된다.
플래그 부분에는 +혹은 공백(이것이 우리가 흔히 쓰는)을 넣을 수도 있다.

printf("% d\n", 10); : 10출력
printf("% d\n", -10); : -10 출력

printf("%+d\n", 200); : +200
printf("%+d\n",-200); : -200 출력

공백을 넣으면 양수일 때는 부호를 출력하지 않고 공백으로 표시하고 음수일 때는 - 부호를 출력한다. 플래그를 +로 지정하면 양수는 + , 음수는 - 부호를 출력한다.
또는, #을 넣으면 8진수나 16진수를 출력할 때 자동으로 0,0x,0X를 붙여준다.

printf("%#o\n"0721);
printf("%#x\n",0xfl);


실수의 경우 .을 넣어서 정밀도를 지정할 수 있다.

printf("%.2f\n", 1.2f) -> .2f로 적었으므로 소수 둘째 자리까지 출력한다는 뜻.

 실수에 플래그와 폭,정밀도를 함께 적용하면

printf("%010.2f\n",1.2f) -> 출력 폭은 10칸, 둘째자리까지, 남는 공간은 0으로.

 

문자와 문자열에도 마찬가지로 출력 폭을 지정 가능하다.

printf("20s\n","Hello,World!"); -> 출력 폭이 20칸으로 지정되어 오른쪽에서부터 Hello world가 출력됨.

 

 

**** 지수 표기법 ****

2100 -> 2.1e+3
2.1e-2 -> 0.021

정수 부분은 한 자릿수만 적고 소수 뒤에 e와 지수 표기. -지수면 -로 +지수면 +로.



특수문자 (escape character, 혹은 확장 문자)

\a   경고음
\b   백 스페이스
\f    폼 피드
\n   개행
\r    캐리지 리턴
\t    수평 탭
\v   수직 탭
\\   \
\'    '
\"    "

 이것들도 문자 배열에 직접 삽입할 수 있으며, 1바이트씩 차지한다.

 

 실수형의 기본 타입은 double이기 때문에 float를 사용하고 싶다면 float a = 1.23f 이런식으로 뒤에 f를 붙여 표기해야 하는데,
이런식으로 접미사(suffix)를 붙여 리터럴의 크기를 명확하게 표현할 수 있다.

 

 

대문자,소문자 구분 없이 사용한다.

 

#include <stdio.h>
#include <float.h>
int main()
{
 printf("%ld\n", -10L);                       // long 크기의 정수 리터럴
 printf("%lld\n", -1234567890123456789LL);    // long long 크기의 정수 리터럴

 printf("%u\n", 10U);                         // unsigned int 크기의 정수 리터럴
 printf("%lu\n", 1234567890UL);               // unsigned long 크기의 정수 리터럴

 printf("%lu\n", 10UL);                       // unsigned long 크기의 정수 리터럴
 printf("%llu\n", 1234567890123456789ULL);    // unsigned long long 크기의 정수 리터럴

 printf("0%lo\n", 017L);             // long 크기의 8진 정수 리터럴
 printf("0%lo\n", 017UL);            // unsigned long 크기의 8진 정수 리터럴

 printf("0x%lX\n", 0x7FFFFFL);       // long 크기의 16진 정수 리터럴
 printf("0x%lX\n", 0xFFFFFFFFUL);    // unsigned long 크기의 16진 정수 리터럴

 printf("%f\n", 0.1f);     // 0.100000: float 크기의 실수 리터럴
 printf("%f\n", 0.1F);     // 0.100000: float 크기의 실수 리터럴

 printf("%f\n", 0.1);      // 0.100000: double 크기의 실수 리터럴
 
 printf("%Lf\n", 0.1l);    // 0.100000: long double 크기의 실수 리터럴
 printf("%Lf\n", 0.1L);    // 0.100000: long double 크기의 실수 리터럴

 printf("%f\n", 1.0e-5f);     // 0.000010: float 크기의 실수 리터럴
 printf("%f\n", 1.0e-5F);     // 0.000010: float 크기의 실수 리터럴
 
 printf("%f\n", 1.0e-5);      // 0.000010: double 크기의 실수 리터럴
 
 printf("%Lf\n", 1.0e-5l);    // 0.000010: long double 크기의 실수 리터럴
 printf("%Lf\n", 1.0e-5L);    // 0.000010: long double 크기의 실수 리터럴

 return 0;
}

 

 

 

 

신고

'ComputerEngineering > C/C++' 카테고리의 다른 글

printf  (0) 2016.11.21
전처리기  (0) 2016.08.25
가변 인자  (0) 2016.08.18
동적 할당(C)  (0) 2016.08.17
memory.h  (0) 2016.08.13
time.h (c++의 경우 ctime)  (0) 2016.08.10
trackback 0 And comment 0
prev | 1 | 2 | 3 | 4 | 5 | 6 | ··· | 43 | next