簡體   English   中英

在C中使用scanf讀取float

[英]Reading float using scanf in c

我有一個包含float變量的結構,

struct MyStruct{
    float p;
}newMyStruct;

我正在使用scanf向其中讀取值

int main(){
    scanf("%f",&(newMyStruct.p));
}

問題是當我使用printf("%f",newMyStruct.p)打印時printf("%f",newMyStruct.p)它會打印'0.000000'。 我也收到警告,說粗體是雙倍的,而格式期望它是浮動的(警告scanf("%f",&(newMyStruct.p));語句)。當我將scanf()語法更改為scanf("%0f",&(newMyStruct.p)); printf("%0f",newMyStruct.p); 正確打印浮點值,但編譯器發出另一個警告(與精度相關的值為0)。 同樣, printf("%2f",newMyStruct.p)以其他格式打印浮點數。

所以,我的問題是我如何擺脫所有這些警告並讀取一個可以正確打印的適當的float變量。

我無法訪問通常在上面編寫代碼的筆記本電腦,因此無法提供適當的警告。

編輯:

我無法重現該問題。 當我使用通過gcc編譯的以下代碼時,一切都會按預期進行:

#include <stdio.h>

struct MyStruct {
  float p;
} newMyStruct;

int main() {
  scanf("%f", &(newMyStruct.p));
  printf("%f\n", newMyStruct.p);
}

gcc --version的輸出如下:

gcc(Debian 4.7.2-5)4.7.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM