C.双重国籍的解释
我目前正在为学校做一个项目,我被一个问题打断了。基本上,分配是什么:我们得到一个文件,包含例如:E18.91,N10.03,没有点,所以有所有这些值,26天,显示字母的使用频率 我需要做的是使用fscanf对这些文件进行排序。我想要一个包含字符,另一个包含数字。我一直在尝试以下事情: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", ¤tLetter
fp2 = fopen("frequencyTable.txt", "r");
if(fp2 != NULL) {
while (fscanf(fp, "%c %d", ¤tLetter[counterTwo], &freqLetter) == 2){
printf("%c AND %d\n", currentLetter[counterTwo], freqLetter);
counterTwo++;
}
exit(0);
}
但正如我所注意到的,我正在实现的fscanf并没有看到数字的第二部分,所以在点的右侧,作为一个双精度,因此停止循环。有什么我遗漏的吗?我应该得到的是第一个字母,所以是currentLetter,第二个是整数,而不是打破循环得到半个数字
有没有人能给我一个具体的线索或提示。提前谢谢 将
%lf
格式说明符用于double
fscanf(fp, "%c %lf", ¤tLetter[counterTwo], &freqLetter)
// ^^
e 18.91,n 10.03无圆点
您必须
fscanf
这些行,用指针遍历,并用点替换第二个空格,然后在该字符串上使用sscanf
。谢谢您是救命恩人,虽然我已经尝试过了!现在工作。再次感谢你,我正要放弃。请你解释一下你是如何修复我的代码框的,上面的一行没有排好,所以我以后在发布内容时不会犯同样的错误:)默认情况下,以4个空格开头的行被视为代码。还可以高亮显示一块文本并使用ctrl键+k@KiptScriddy我刚刚在meta上找到一篇文章,这篇文章能更好地解释