簡體   English   中英

如何將數字存儲在結構數組中

[英]How to store numbers in an array of structs

嘿,所以我有下面的字符串:

char teststring[50] = "A 1.0 2.0 3.0 4.0";

我有很多這種格式的字符串,我只需要將數字(而不是字母)存儲在一起。 所有數字都是相關的,因此我一直在嘗試制作結構數組,但遇到了一些麻煩。 我像這樣設置結構(命名為wall.h文件並將其包含在主文件中)

struct example{
    double x1;
    double y1;
    double x2; 
    double y2;
};

然后使用聲明14個結構的數組

struct example ex[14];

然后我試圖用它來掃描字符串中的值並將它們存儲在數組的第一個結構中

sscanf(teststring, "A %f %f %f %f", &ex[0].x1, &ex[0].y1, &ex[0].x2, &ex[0].y2);

但是它似乎不起作用,並告訴我當我打印時該值為0.00000,而不是1.0

今天在您的情況下未定義的行為表現為0.0
用不正確的參數調用scanf是未定義的行為。 在您的情況下,您要告訴編譯器參數類型為float *而是傳遞double * float *

您應該使用"%lf"來讀取double

sscanf(teststring, "A %lf %lf %lf %lf", &ex[0].x1, &ex[0].y1, &ex[0].x2, &ex[0].y2);
/*                    ^^^^^^^^^^^^^^^                                               */

"%f"用於讀取(使用scanf系列函數)和打印(使用printf系列函數) floatprintf double (它適用於float因為可變參數函數中參數的自動提升。從一種類型的指針到另一種類型的指針(例如float *double * )的自動提升是不可能的。)

"%lf"用於讀取和寫入double

總結一下:

+--------+--------------+---------------+
|  type  | scanf family | printf family |
+--------+--------------+---------------+
| float  | %f           | %f            | 
+--------+--------------+---------------+
| double | %lf          | %f or %lf     |
+--------+--------------+---------------+
Using %lf in printf to print float would work but can be misleading to other readers

暫無
暫無

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

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