-1

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 の値と一致しません。

何がうまくいかないのですか?

助けてくれてありがとう!

編集: これのポイントは、L2 キャッシュのサイズに関連して memcpy 関数の速度をテストすることです。上記のコードが実際にすべての A を B にコピーしていることを確認したいだけです.

4

1 に答える 1

1

何をしようとしているのかを正確に伝えるのは難しいです。

どのように値を印刷していますか? のような印刷ルーチンprintfもタイプに依存します。

浮動小数点の入力値を取得したいだけのようです。これはscanf ファミリーを使用して行うことができます。

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 *から浮動小数点数に変換しようとしていて、 を使用したくない場合は、 atofsscanfも使用できます。

const char* num_str = "1.01";
double num = atof(num_str);
于 2012-10-09T23:22:48.827 に答える