Ⅰ c語言 從文件中讀取雙精度浮點
問題很簡單,只要將:fscanf(fp,"%.8f
%.8f\n",&a[2*i],&a[2*i+1]);
改為:fscanf(fp,"%lf%lf",&a[2*i],&a[2*i+1]);
注意:double雙精度型數值的輸入必須用%lf,而它的輸出則和float單精度型數值一樣用%f,%e均可。同時注意fscanf()和scanf()類似在輸入數據的時候不能指定數據的精度。fscanf()可以自動判斷回車,所以%.8f最後的'\n'也是多餘的。而且對本題,"%lf%lf"之間加不加空格都是一樣的,fscanf()遇到空格會自動判斷第一個數據讀入完成,接下來的就是第二個數據。當然如果是數值加字元,那麼空格就必不可少要和文件中嚴格對應了。
Ⅱ 怎麼用C語言程序讀取txt文件中的浮點型數據
先按字元串讀進來,然後在根據需要自行拆分組合.
Ⅲ C語言從文件讀取字元串與浮點數問題
換行符也是一個字元,在ASCII里有定義,當你讀取 char型時,當然會將換行符讀取。
Ⅳ 讀取一個單精度浮點數並輸出它(保留小數點後3位)c語言
#include<stdio.h>
int main()
{
float i;
scanf("%f",&i);
i=i*10000;
i=i+5;
printf("%.3f",i/10000);
return 0;
}
如果要求四捨五入的話 就這樣了 (float如果不行的話就用double) 大概就是這樣了
Ⅳ C語言讀取文本文件浮點數。
fscanf(xxx,"%lf",&xxx);
Ⅵ c語言,從鍵盤讀取整數n和浮點數g的程序怎麼寫
從鍵盤讀取整數n和浮點數g的程序應該這樣寫:
int n;
float g;
scanf("%d%f",&n,&g);
Ⅶ C語言可以直接從字元串里讀取整數和浮點數嘛
注意, sscanf(), 你少寫一個 s.
sscanf 里的 格式 "%d:%d:%f 告訴了: ASCII 碼 到 int,int,float 的格式化轉換,輸入數據分隔符是分號。第一個參數 str,是輸入流,來自字元串str。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str = "10:10:20.0";
int a,b;
float c;
sscanf(str, "%d:%d:%f", &a, &b, &c);
printf("%d %d %f\n",a,b,c);
return 0;
}
Ⅷ c語言,從字元串中截取浮點數
#include <stdio.h>
main()
{
char s[]="2.39+2.39+1.22+8.9-9*7";
float a[4];
int i;
sscanf(s,"%f%f%f%f",&a[0],&a[1],&a[2],&a[3]);
for (i=0;i<4;i++) printf("%g ",a[i]);
return 0;
}
得:
2.39 2.39 1.22 8.9
Ⅸ c語言中讀取一個浮點數輸出對應的百分率百分率取整
如果是四捨五入,那麼:
單精度數化為取整百分數,在四捨五入時,當千分位為5時不會進位。如果一定要用單精度數來四捨五入取整百分數,那麼:
#include<stdio.h>
voidmain()
{
floata,k;
scanf("%f",&a);
k=a*100;
if((int)(a*100+0.5)==k+1)k+=1;
printf("%.f%%",k);
}
對於雙精度數,就不存在這個問題。
#include<stdio.h>
voidmain()
{
doublea;
scanf("%lf",&a);
printf("%.f%%",a*100);
}
上面講的是四捨五入的情況。如果不四捨五入,而是直接取整數部分,那麼:
#include<stdio.h>
voidmain()
{
floata;
scanf("%f",&a);
printf("%d%%",(int)(a*100));
}
Ⅹ C語言中,請問如何從字元串中讀取所有的浮點數(個數不知道),浮點數以空格隔開
用sscanf確實可以實現,代碼如下:
#include <stdio.h>
int main()
{
char *str="1.0 2.0 3.0 4.0 50.0" ;
int i ;
double d ;
i=0;
while( *str == ' ' ) str++ ;
while( sscanf( str, "%lf" , &d )==1 )
{
while( *str != ' ' ) str++ ; //跳過已讀過的數
i++;
printf( "d:%03d= %lf\n" , i , d );
while( *str == ' ' ) str++ ; //跳過分格符:空格
}
printf( "there is(are) %d float num(s) in str\n" , i );
return 0;
}
當然,你也可以用strtok()函數過獲取數據,細節可參看相應的函數介紹