1

我目前正在为学校做一个项目,但我被一个问题阻止了。基本上分配是什么:我们得到一个文件,例如: e 18.91, n 10.03 没有点,所以所有这些值,26天,显示一个字母的使用频率。

我需要做的是使用 fscanf 对这些文件进行排序。我想要一个包含字符,另一个我想要数字。我一直在尝试以下事情:

fp2 = fopen("frequencyTable.txt", "r");
if(fp2 != NULL) {
    while (fscanf(fp, "%c %d", &currentLetter[counterTwo], &freqLetter) == 2){
        printf("%c AND %d\n", currentLetter[counterTwo], freqLetter);
        counterTwo++;
    }   
    exit(0);
}

但正如我注意到我正在实施的 fscanf 没有看到数字的第二部分,所以从点的右侧,作为双因此停止循环。有什么我错过的吗?我应该得到的是第一个字母,所以 currentLetter,第二个是整数,而不是打破循环并得到半个数字

有没有人有线索或提示我在哪里具体看。提前致谢!

4

2 回答 2

2

使用%lf格式说明符double

fscanf(fp, "%c %lf", &currentLetter[counterTwo], &freqLetter)
//              ^^
于 2013-02-15T10:09:01.997 回答
0

e 18.91, n 10.03不带点

您将不得不使用fscanf这些行,用指针遍历它并用点替换第二个空格,然后sscanf在该字符串上使用。

于 2013-02-15T10:13:36.650 回答