前提・実現したいこと
int型・double型の数値や文字列を任意の順番でchar型の配列に1字ずつ格納を行いたいです。
例:double num = 122.7 int num2 -1の場合、
char型の配列にはa/1/2/2/./7/b/-/1/z
double num = 12.7 int num2 1の場合、
char型の配列にはa/1/2/./7/b/1/z
※[0]に"a"、numの数値の後に"b"、num2の数値の後に"z"を格納するという順番も絶対です。
発生している問題・エラーメッセージ
segmentation fault(core dumped)が出てしまいます。
(double型やint型からの変換ではなく、直接char* tmpStr = "122.7";やchar* tmpStr2 = "-1";であれば1字ずつ配列に格納できることは確認済みです。そのため、doubleやintをchar*に変換すればよいと安易に考えたのですが、間違っているのでしょうか?)
C
1#include <stdio.h> 2 3int main(void) { 4 5 char num_str[9]; 6 double num1 = 122.7; 7 char change; 8 char change2; 9 char* tmpStr; 10 char* tmpStr2; 11 int num2 = -1; 12 int count = 0; 13 14 num_str[0] = 'a'; 15 16 change = (char)num1; 17 char* str = (char*)&change; 18 19 tmpStr = str; 20 while(*tmpStr != '\0'){ 21 num_str[count+1] = *tmpStr; 22 tmpStr++; 23 count++; 24 } 25 26 num_str[count+1] = 'b'; 27 28 change2 = (char)num2; 29 char* str2 = (char*)&change2; 30 31 tmpStr2 = str2; 32 while(*tmpStr2 != '\0'){ 33 num_str[count+2] = *tmpStr2; 34 tmpStr2++; 35 count++; 36 } 37 38 num_str[count+2] = 'z'; 39 40 for(count = 0;count <= 9; count++){ //配列格納の確認用 41 printf("num_str[%d] = %c\n",count,num_str[count]); 42 } 43 44return 0; 45}
補足情報(FW/ツールのバージョンなど)
ポインタはまだまだ理解不足の点も多いため、お手数ですが丁寧に教えていただけますと大変ありがたいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/01 09:14
2021/09/01 10:09