C中计算字符串中特定子字符串的数量

标签 c string

我有一个字符串,其中放置了从相当大(500MB)的文本文件中读取的所有字符。下面给出了我如何读取 .txt 文件。

    long fsize(FILE *fp) {
    fseek(fp, 0, SEEK_END);
    long bytes = ftell(fp);
    rewind(fp);
    return bytes;
}
char *filecontent='\0';
FILE *fp;
fp=fopen(file.txt,"r");
long size = fsize(fp);
fcontent = malloc(size);
fread(fcontent, 1, size, fp);     

`

fcontent 指向应采用以下格式的字符串:

matrix
trivial
bigbash
tropical
swalloed
.
.
.

现在我需要计算 fcontent 中“ba”子字符串的出现次数。由于文本文件中的每一行都包含一个单词,并且子字符串搜索应仅限于该单词,因此如何从 fcontent

最佳答案

这里有一个适合您的算法:

  1. 有一个当前指针。将其初始化为指向字符串的开头。
  2. 从当前指针开始搜索第一个行尾字符。
  3. 如果你跑出了绳子的末端,停下来,你就完成了。
  4. 将行尾字符转换为零字节。
  5. 处理从当前指针开始的字符串。
  6. 将当前指针设置为指向您替换为零字节的行尾字符。
  7. 恢复当前指针处的行尾字符,这样就不会损坏字符串(除非您不在乎)。
  8. 不断增加当前指针,直到它指向除行尾字符之外的其他内容。如果您达到零字节,请停止,您就完成了。
  9. 转到第 2 步。

关于C中计算字符串中特定子字符串的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53311905/

相关文章:

ios - 尝试为应该调整字符串的属性制作包装器

c - 让这个功能做我想做的事我哪里出错了?

java - 在 Java 中连接空字符串时在编译和运行时会发生什么?

php - 包含月份和年份的排序字符串 - 'may - 2016'

c++ - 为什么对字符串参数的 const 引用可以采用字符串文字?

python - 如何将 txt 文件中的元组添加到不带引号的列表中? Python

c - C语言中如何将变量的地址赋值为NULL?

c++ - 我们可以在没有#ifdef __cplusplus 的情况下在C 文件中使用extern "C"吗?

C 编程,需要帮助将用户输入放入 for 循环中

c - 使用 C 在 ARM Cortex M 系列上获取程序计数器值