我正在制作一个接受数字然后解析文件以返回与该数字关联的名称的程序。大部分都完成了,但只有最后一步。现在,我的程序通过检查每一行的第一个标记正确地找到了与给定数字关联的行。以下是重要的代码片段:
while (fgets(line, 50, f)) {
tok = strtok(line, " ");
if (n == atoi(tok))
{
printf(" %s\n", tok);
return 0;
}
}
现在它只打印第一个标记,这很好,因为这意味着它找到了正确的行。但是,我需要它来打印 last 标记,但我不知道如何使用 strtok()
来实现。有人可以帮帮我吗?
最佳答案
一旦找到所需的行,继续调用 strtok
并将 NULL
作为第一个参数,但要跟踪先前的返回值是什么。一旦 strtok
返回 NULL,指向前一个标记的指针指向最后一个:
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;
}
/proc/interrupts
的内容:
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”的输出:
6:
last: floppy
关于c - 获取 strtok 的最后一个标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39321930/