【发布时间】:2017-10-05 00:11:14
【问题描述】:
我正在尝试使用分配的内存为结构分配值,但我遇到了一些问题!我已经 4 个月开始编程了,如果我犯了一个愚蠢的错误,很抱歉,但是为了更好的变量名称和摆脱所有其他废话,这里重新编写了代码:
typdef struct mystruct {
double a, b;
int c, d;}
mystruct
// allocating an array to store a number of a, b, c and d values
mystruct * pointer = ((mystruct*)malloc((numFileLines * sizeof(mystruct))));
i = 0;
pointer[i].a = 2133;
pointer[i].b = 3424; .. and so on
这是我的问题.. 我不认为这些被存储了。有谁知道为什么不/我如何将这些值打印到控制台作为测试?
i++;
pointer[i].a = 2133;
pointer[i].b = 3424;
这给了我垃圾:(试图打印第二个值)
printf("%lf", pointer[1].b);
如果有人可以提供帮助,或者如果您需要有关此问题的更多信息,我将每分钟刷新此页面! 谢谢!
【问题讨论】:
-
不完全是,那个人正试图将一个数组复制到另一个数组。我只是在分配一个值。
-
将您的sn-ps粘贴到适当的程序框架后,无法重现。请发布显示问题的Minimal, Complete, and Verifiable example。我正在使用
printf("%f %f\n", pointer[1].a, pointer[1].b); -
@P.Kouvarakis 你需要
%lf用于double在scanf函数系列中,在printf中的任何一个都可以。注意printf中没有float格式说明符,但float参数被提升为double。 -
如果你的 C 库不支持 C99,
%lfinprintf有未定义的行为。
标签: c arrays pointers struct malloc