2012-10-09 364 views
-1

试图进入副本B ....没有B中的memcpy()用不同的数据类型

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))); 

打印值不答

什么错什么搭配?

感谢您的帮助!

编辑:这点的关键是测试memcpy函数的速度与L2缓存大小的关系。我只是想确保上面的代码实际上是将所有A都复制到B中。对不起,我遗漏了这些信息:我只是试图尽可能简化它(而且这次太过分了)

+0

您是否试图将'char's转换为'double's? – japreiss

+5

没有什么是错的。唯一的错误可能是你的期望。 –

+1

什么是你放入A中,你期望在B中看到什么,以及你如何看待它?另外,请注意,除非sizeof(char)== sizeof(double),否则不会填充B,这是不太可能的。 –

回答

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);