C语言 从文件中扫描特定字



我有一个名为pageRankList的文件,其中包含url,外向链接的数量,按此顺序排列的页面排名。如果我想获得给定URL的pageRank。我怎么能做到这一点与fscanf或其他函数?

url23 4 0.0405449
url31 3 0.0371111
url22 5 0.0300785
url34 4 0.0288782
url21 2 0.0247087
url11 3 0.0235192
url32 2 0.0227647

这是我到目前为止所拥有的,但是当我运行它时,它会给我一个未知地址错误的SEGV,我不知道为什么:(

static double getPageRank(char *url) {
double pageRank = 0;
FILE *fp = fopen("pageRankList.txt", "r");
char str[1000];
int counter = 0;
while (fscanf(fp, " %98s", str) != EOF) {
if (strcmp(url, str) == 0) {
counter++;
continue;
}
if (counter == 2) {
pageRank = atof(str);
printf("%fn", pageRank);
break;
}
}
fclose(fp);
return pageRank;
}

fscanf(fp, " %98s", str)

这将在遇到空白时停止读取。最好同时阅读这三件事(url,外向链接的数量,页面排名)。我会一次读取一整行,然后使用sscanf:

static double getPageRank(const char* url)
{
FILE* fp = fopen("pageRankList.txt", "r");
if (!fp) return -1;
char str[1000];
double pageRank = -1;
while (fgets(str, sizeof(str), fp)) { // Read line
int number;
char line_url[100];
// Try to parse line
if (sscanf(str, "%99s %d %lf", line_url, &number, &pageRank) == 3) {
if (strcmp(url, line_url) == 0) {
break;
}
}
}
fclose(fp);
return pageRank;
}

*注意,只要url中没有空格就可以。

相关内容

  • 没有找到相关文章

最新更新