2016-09-04 4 views
3

숫자를 허용하는 프로그램을 만들고 파일을 구문 분석하여 해당 번호와 연결된 이름을 반환합니다. 대부분 끝났지 만 마지막 단계가 하나 있습니다. 지금 당장, 내 프로그램은 모든 행의 첫 번째 토큰을 검사하여 주어진 숫자와 관련된 행을 올바르게 찾습니다.strtok의 마지막 토큰을 가져 오는 중

while (fgets(line, 50, f)) { 
     tok = strtok(line, " "); 

     if (n == atoi(tok)) 
     { 
      printf(" %s\n", tok); 
      return 0; 
     } 
    } 

을 지금은 그냥이 오른쪽 라인을 발견 의미하기 때문에 큰 첫 번째 토큰을, 인쇄 : 여기에 중요한 코드의 단편이다. 그러나 마지막으로 토큰을 인쇄해야하지만 strtok()으로 그 작업을 수행하는 방법을 알 수 없습니다. 누군가 나를 도울 수 있었습니까?

+2

중복 질문 http://stackoverflow.com/questions/32822988/get-the-last-token-of-a-string-in-c – Saskia

답변

2

원하는 줄을 찾았 으면 첫 번째 매개 변수는 strtok으로, NULL은 계속 호출하고 이전 반환 값의 내용을 추적하십시오. strtok NULL을 반환하면, 마지막에 이전 토큰 점에 대한 포인터 : /proc/interrupts

if (number == atoi(token)) { 
     char *prev = token; 
     printf(" %s\n", token); 
     while ((token=strtok(NULL," ")) != NULL) { 
     printf(" %s\n", token); 
     prev = token; 
     } 
     printf("last: %s\n", prev); 
     return 0; 
    } 

내용 : "6"인수

  CPU0  
    0: 723903927 IO-APIC-edge timer 
    1:  10105 IO-APIC-edge i8042 
    6:   5 IO-APIC-edge floppy 
    7:   0 IO-APIC-edge parport0 
    8:   1 IO-APIC-edge rtc 
    9:   0 IO-APIC-level acpi 
12:  24023 IO-APIC-edge i8042 
14:  221198 IO-APIC-edge ide0 
15: 6473219 IO-APIC-edge ide1 
169:  637825 IO-APIC-level eth0 

출력 :

6: 
last: floppy 
관련 문제