C.双重国籍的解释

C.双重国籍的解释,c,double,scanf,C,Double,Scanf,我目前正在为学校做一个项目,我被一个问题打断了。基本上,分配是什么:我们得到一个文件,包含例如:E18.91,N10.03,没有点,所以有所有这些值,26天,显示字母的使用频率 我需要做的是使用fscanf对这些文件进行排序。我想要一个包含字符,另一个包含数字。我一直在尝试以下事情: fp2 = fopen("frequencyTable.txt", "r"); if(fp2 != NULL) { while (fscanf(fp, "%c %d", &currentLetter

我目前正在为学校做一个项目,我被一个问题打断了。基本上,分配是什么:我们得到一个文件,包含例如:E18.91,N10.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,第二个是整数,而不是打破循环得到半个数字


有没有人能给我一个具体的线索或提示。提前谢谢

%lf
格式说明符用于
double

fscanf(fp, "%c %lf", &currentLetter[counterTwo], &freqLetter)
//              ^^
e 18.91,n 10.03无圆点


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

谢谢您是救命恩人,虽然我已经尝试过了!现在工作。再次感谢你,我正要放弃。请你解释一下你是如何修复我的代码框的,上面的一行没有排好,所以我以后在发布内容时不会犯同样的错误:)默认情况下,以4个空格开头的行被视为代码。还可以高亮显示一块文本并使用ctrl键+k@KiptScriddy我刚刚在meta上找到一篇文章,这篇文章能更好地解释