複数のデータ型をデータ型変数、たとえばchar *に格納することは可能ですか?データに複数の型が埋め込まれています
この例では、val1(整数)、val3(val5)(chars)を出力しますが、2番目の整数は0、floatは0.00を出力します。
これを行う方法の手がかりはありますか?
助けてください。
#include <iostream>
static void printData(char *what) {
int val1, val2, counter = 0;
char val3, val4, val5;
float val6;
val1 = *((int *)what+counter);
counter += sizeof(int);
val2 = *((int *)what+counter);
counter += sizeof(int);
val3 = *((char *)what+counter);
counter += sizeof(char);
val4 = *((char *)what+counter);
counter += sizeof(char);
val5 = *((char *)what+counter);
counter += sizeof(char);
val6 = *((float *)what+counter);
printf("val1 = %d, val2 = %d, val3-5 = %c%c%c, val6 = %.2f", val1, val2, val3, val4, val5, val6);
}
int main (int argc, const char *argv[]) {
char *data = (char *)malloc((sizeof(int) * 2) + (sizeof(char) * 3) + sizeof(float));
int integer = 4, secondInteger = 56;
char test[3] = { 't', 'e', 's' };
float floatValue = 3.14f;
int counter = 0;
*(data) = integer;
counter += sizeof(int);
*(data + counter) = secondInteger;
counter += sizeof(int);
*(data + counter) = test[0];
counter += 1;
*(data + counter) = test[1];
counter += 1;
*(data + counter) = test[2];
counter += 1;
*(data + counter) = floatValue;
printData(data);
return 0;
}
うん、かなり多くの。私はそれらを使うことができると知っていますが、彼らは質問の目的を破り、なぜすべての値を印刷するのではなく、なぜこれを行うのでしょうか。 –