c - 如何知道现在正在读取的行数

标签 c string

上次我在一个项目中询问了信号问题,你的帮助非常有帮助。我只有一个问题卡住了。我想读取一个文件(必须是大文本文件)并计算某些单词的出现次数。好吧,这不再是问题了 但是每当我调用 SIGSTP(ctrl+Z)时,程序应该显示它现在正在读取的行号,这怎么可能。 我知道如何计算整个文本的行数,因此如果我在某个时间调用它,返回的数字将是总行数,或正在读取的行

最佳答案

您可以使用信号系统调用注册特定信号:

typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);

例如:

void signal_handler(int signal) 
{
    //display line number
}

signal(SIGSTP, signal_handler);

该信号将中断您当前的代码链,这意味着可以在读取文件期间调用信号处理程序。 如果您使用全局变量来存储您正在读取的行,那么这将返回最新的调用值。

关于c - 如何知道现在正在读取的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21092608/

相关文章:

c - USART3初始化STM32F103RB

java - 获取字符串中每个单词的第一个字符

c++ - C++中如何将整数转换为固定位数的字符串?

c++ - 尝试替换字符串中的单词

c - 使用 printf 函数绘制一个由内框组成的矩形

java - 如何在 CSV 文件或 Excel 文件中获取该目录内的文件路径、名称、创建日期、上次修改日期和文件扩展名?

用于访问指针数组的 C++ 指针声明

c - 大整数程序。 X 乘法后停止

javascript - 突出显示重复的行值 JavaScript

java - float 的格式