C解释了一个双

时间:2013-02-15 10:08:15

标签: c double scanf

我目前正在为一所学校的项目工作,我已经遇到了问题。基本上是什么分配:我们得到一个包含例如的文件:e 18.91,n 10.03没有点,因此所有这些值,26天,显示一个字母的使用频率。

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

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,第二个整数而不是打破循环并获得半个数字

有没有人对我有什么线索或暗示具体看哪儿。提前谢谢!

2 个答案:

答案 0 :(得分:2)

使用%lf

double格式说明符
fscanf(fp, "%c %lf", &currentLetter[counterTwo], &freqLetter)
//              ^^

答案 1 :(得分:0)

  

e 18.91,n 10.03 没有点

你必须fscanf这些行,用指针完成它并用点替换第二个空格,然后在该字符串上使用sscanf