2016-09-04 9 views
3

私は数字を受け取り、その数字に関連付けられた名前を返すようにファイルを解析するプログラムを作っています。ほとんどの作業は完了ですが、最後のステップが1つあります。今、私のプログラムは、すべての行の最初のトークンを調べることによって、与えられた数に関連する行を正しく見つけ出します。ここで重要なコードの抜粋です: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

希望の行が見つかったら、strtokNULLと最初のパラメータとして呼び出しますが、以前の戻り値の内容を把握してください。 strtokはNULLを返したら、最後の1に前のトークンポイントへのポインタ:/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 
関連する問題