亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問如何使用atof函數,麻煩幫忙寫一下這塊的格式謝謝!

請問如何使用atof函數,麻煩幫忙寫一下這塊的格式謝謝!

慕容森 2023-03-04 18:14:11
比如一個數組n[100]中存儲了如n[0]=2134n[1]=kjsg.....得數 那么我想將其中所有數據轉化為浮點型數據,并存儲到另外一個數組,
查看完整描述

2 回答

?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

首先你要了解atof的prototype:
double atof(const char *str);
和atoi一樣,函數的參數類型必須是char *,
而如果字符串里面沒有可以轉換的數字,
比如"abcd"的話,那么atof( "abcd" )將返回一個任意值。
而對于atoi,返回0

特別對于atoi,如果字符串為“0”的話,也會返回0,
所以不能判斷字符串中是否含有0。
而對于atof,在WIKI里寫到
“If the string is not a valid textual representation of a double, atof will silently fail, returning a random value”
所以更為危險。

所以不是什么值都可以轉化為你要的數據類型的,
當然在內存里都是以0,1儲存的,沒有類型這個概念,
而我們可以使用各種類型,其實是編譯器的功勞。

對于atoi和atof,
有新的函數可以替代
atoi可以用strtol替代,
而atof可以用strtod等替代
strtol比atoi安全,
具體的你可以查他們的用法,我講起來就有點復雜了

查看完整回答
反對 回復 2023-03-08
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

#include <stdlib.h>
#include <stdio.h>

void main( void )
{
char *s; double x; int i; long l;

s = " -2309.12E-15"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

s = "7.8912654773d210"; /* Test of atof */
x = atof( s );
printf( "atof test: ASCII string: %s\tfloat: %e\n", s, x );

s = " -9885 pigs"; /* Test of atoi */
i = atoi( s );
printf( "atoi test: ASCII string: %s\t\tinteger: %d\n", s, i );

s = "98854 dollars"; /* Test of atol */
l = atol( s );
printf( "atol test: ASCII string: %s\t\tlong: %ld\n", s, l );
}


查看完整回答
反對 回復 2023-03-08
  • 2 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號