memcpy()具有不同的数据类型

时间:2012-10-09 23:09:34

标签: c arrays malloc memcpy

尝试将A复制到B ....

char *A;
double *B;
unsigned int size = 1024;

A = malloc (size*size * sizeof (char));
B = malloc (size*size * sizeof (double));
//fill A here

memcpy (B, &A[0], (size*size * sizeof (char)));

B中的打印值与A中的打印值不匹配。

出了什么问题?

感谢您的帮助!

编辑:这一点是测试memcpy函数的速度与L2缓存的大小有关。我只是想确保上面的代码实际上是将A全部复制到B中。很抱歉忽略这个信息:我只是尽量让它变得简单(这次太过分了)

1 个答案:

答案 0 :(得分:1)

很难准确说出你想要做什么。

你是如何打印价值的?像printf这样的打印例程也取决于类型。

听起来你只想获得浮动输入值。这可以使用scanf family完成。

int num_floats = 10;

double* B = malloc (num_floats * sizeof (double));

int count;

for (count = 0; count < num_floats; count++)
{
    printf("Insert float %d: ", count);
    scanf("%f", &B[num_floats]);
}

for (count = 0; count < num_floats; count++)
{
    printf("Float %d: %f", B[num_floats]);
}

free(B);

如果您尝试将C字符串从char *转换为浮点数并且不想使用sscanf,则还可以使用atof

const char* num_str = "1.01";
double num = atof(num_str);