2017-06-08 17 views
1

これを見つけるために数時間オンラインで調べていますが、私が必要とするものはまだ見つかりませんでした。後で.txtファイルに書き込むために、char*(スペースで区切って)に入れる必要がある複数の整数があります。これまでの私の最大の試みはこれでした:複数の整数を文字配列に格納する

char* temp = (char)input.Z_pos_Camera_Temperature; 

ここで、input.Z_pos_Camera_Temperatureは構造体のメンバーです。私は試しました

char* temp = (char)input.Z_pos_Camera_Temperature + ' ' + input.Z_neg_Camera_Temperature; 

ただし、3つの文字の値を個別に追加しました。誰かが私にこれを理解させる手伝いができますか?

答えて

2

あなたはsnprintfのを使用することをお勧めします。

char buf[32]; snprintf(buf, 32, "%d %d", input.Z_pos_Camera_Temperature, input.Z_neg_Camera_Temperature);

2

C言語では、+演算子を使用して文字を文字列に連結することはできません。また、+演算子を使用して複数の文字列を大きな文字列に連結することもできません。

あなたは、しかし、そのような文字列を作成する機能sprintfを使用することができます。

char buffer[100]; // adjust per your needs 
sprintf(buffer, "%d %d", input.Z_pos_Camera_Temperature, input.Z_neg_Camera_Temperature); 
0

あなたは、すべての番号を格納することができるように十分char*を大きくする必要があります。 その後、数を文字列に変換するために、次のようなものを使用することができます。

int n[10] = {1, 2, 3, 4, 5888, 6, 7, 8, 9, 10}; 
char final[1000]; //adjust to acoomodate all the digits and spaces 
int len = 0; 
for (int i = 0; i < 10; i++) { 
    char str[64]; 
    sprintf(str, "%d", n[i]); 
    strcpy(final + len, str); //copy the ith number 
    len += strlen(str); //take a note of the number of digits used 
    final[len] = ' '; //add a space 
    len++; 

} 
final[len] = '\0'; //terminate the string 

Try online

2

あなたはすでにそれを持っているので、これは本当に答えとして意図されていません。あなたが実際に試したことを理解するために投稿しています。最初のサンプルを見ると:

char* temp = (char)input.Z_pos_Camera_Temperature; 

まず、この行をコンパイルすると警告が表示されるはずです。 C4047警告

:何かのように「初期化」:「のchar *が」これは何か悪いことが起こっていることの指標である「シャア

からの間接のレベルが異なります。この行が実行されるとどうなりますか?

input.Z_pos_Camera_Temperatureの値が32の場合、4バイトの整数はキャストされたcharによって1バイトに切り捨てられ、char* tempに割り当てられます。 tempにアドレス0x00000020が含まれるようになりました。 input.Z_pos_Camera_Temperatureが450である

場合は(多分カメラはオーブンである?)値はに0xC2に0x000001C2からに切り捨てられる、割り当てられたときに符号拡張、および `tempが」今のアドレス0xffffffC2が含まれます。

第二の試みは、整数追加キャストと代入の前に存在していることを除いて同じである:

char* temp = (char)450 + 32 + -5; // NOTE: the 32 here is the ASCII value for ' ' 
2

別のオプションは、string.hのLIBからstrcatの機能を使用することです。

関連する問題