화일에 있는 문자 및 숫자에서 원하는 부분만을 어떻게 읽나요?

midasyoo의 이미지

초보라서 고수님들께 질문을 드립니다.

화일에 저장되어 있는 문자 및 숫자를 읽으려고 합니다.

화일에 저장되어 있는 정보는 아래와 같습니다.

- 아래 -

I / F |bytes    packets errs drop fifo frame compressed 
    lo:  109399    1067    0    0    0     0          0            
  eth0:1051465463 158252053    0    0    0     0          0         

위의 내용중에서 packets의 1067을 읽으려면, 어떻게 코드를 짜야 하나요?

그리고, 109399와 1067사이의 구분은 어떻게 하여야 각각의 값을 읽을수 있나요?

고수님들의 지도 부탁드립니다.

amister의 이미지

man 3 string

C에서 string 처리를 하기 위하여 꼭 알아두어야 하는 함수들입니다.
Whitespace (빈칸)에 대해서는 man 3 isspace 를 참고하시면 됩니다.

antz의 이미지

thread 프로그램이 아니라면, strtok을 써보세요.
편리합니다.

http://www.gnu.org/manual/glibc-2.2.3/html_chapter/libc_5.html#SEC79

wooho47의 이미지

sscanf 나 fscanf 를 사용하시면 탭이던 스페이던 빈자리 담에 오는 문자나 숫자를 읽수 있음니다.
예로
if(6 == fscanf (fd, "%*s %lu %*lu %lu %*lu %lu",&memtotal ,&memfree ,&buff));

*가 가운데 있으면 건너 뛰는겁니다.
이것이 도움이 됬으면 하네용

hi 용

wooho47의 이미지

/proc/net/dev 화일로 디바이스 패킷 조사 하실려구 하는거 같은데...

if(5 == sscanf(dev_buffer, " %[^:]: %lu %lu %*lu %*lu %*lu %*lu %*lu %*lu %lu %lu",&dev_tmp1,&rbyte,&val1,&tbyte,&val2))

이렇게 사용하시면 될겁니다.
그럼 앞에 있는 디바이스명과 : 와 바이트수가 구분이 됩니다.

hi 용