【问题标题】:how to choose what you want to scan form a file in C如何从 C 中的文件中选择要扫描的内容
【发布时间】:2015-10-21 20:39:27
【问题描述】:

我正在尝试使用 fscanf 从 proc/stat 进行扫描。 我想获取一些信息,但不是全部,如何声明我希望它扫描的信息,或者我应该只声明每个信息并全部扫描,但我真的不认为这是正确的方法。

例如:我用

扫描
fscanf ("%d %s %c %d %d %d %d %d  %u) %lu( %lu %lu %lu %lu)

所以我想要所有东西,但不想要我保留的 %LU。这个怎么写?

【问题讨论】:

  • 实际上它不仅是我不想要的那个 lu,我还试图从 proc 中获取这些信息......进程的状态。父进程的 PID。优先事项。不错的价值。实时调度优先级。上次执行的 CPU 编号。以字节为单位的虚拟内存大小。以页面为单位的总程序大小。驻留集大小 (RSS),以字节为单位。驻留集大小 (RSS):进程在实际内存中的页数(以页为单位)。页面中的文本(代码)大小。数据 + 堆栈大小(以页面为单位)。页表条目大小(以 KB 为单位)。以 KB 为单位的数据大小。以 KB 为单位的堆栈大小。文本段大小 KB。

标签: c file scanf


【解决方案1】:

正如评论中所指出的,您可以使用星号来丢弃输入。来自scanf 系列函数manual

可选的 '*' 赋值抑制字符:scanf() 按照转换规范的指示读取输入,但是 丢弃输入。没有对应的指针参数是 需要,并且此规范不包括在计数中 scanf() 返回的成功分配数。

还有一个使用scanf函数的例子:

#include <stdio.h>

int main(void)
{
    int a, b;

    scanf("%d %*d %d", &a, &b);
    printf("A: %d\nB: %d\n", a, b);
    return 0;
}

如果你输入“1 2 3”,它会输出“A: 1 B: 3”

您可以使用 fscanf 执行相同的操作,并根据需要丢弃尽可能多的字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-28
    • 2016-06-17
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2011-08-26
    • 1970-01-01
    相关资源
    最近更新 更多