我有一个字符串,我将从一个很大的(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 中一次选择矩阵,琐碎,bigbash ...一次选择一个单词>?
答案 0 :(得分:0)
这是为您准备的算法:
答案 1 :(得分:0)
您的文件每行包含一个单词。您在其中读取了整个文件,然后尝试通过换行符将结果字符串断开。
简单得多的过程是使用getline()逐行读取文件。
然后使用strstr在每个单词中搜索您的子字符串。
http://www.cplusplus.com/reference/string/string/getline/?kw=getline
http://www.cplusplus.com/reference/cstring/strstr/