問題
構造体 stock_strに動的メモリを確保して書く要素を格納しているのですが、正しく格納されません。アロー演算子で代入すると動くものの文字化けなど起こり正しく格納されない。また配列の添字を使うとバスエラーになってしまいます。
該当コード
c
1#include "stock_str.h" 2#include <stdlib.h> 3 4int strlen(char *str) 5{ 6 int i; 7 8 i = 0; 9 while (str[i] != '\0') 10 i++; 11 return (i); 12} 13 14char *strcpy(char *dest, char *src) 15{ 16 int i; 17 18 i = 0; 19 while (src[i] != '\0') 20 { 21 dest[i] = src[i]; 22 i++; 23 } 24 dest[i] = '\0'; 25 return (dest); 26} 27 28struct s_stock_str *strs_to_tab(int ac, char **av) 29{ 30 unsigned int i; 31 t_stock_str *stock_str; 32 33 i = 0; 34 stock_str = malloc(sizeof(t_stock_str) * ac); 35 if (stock_str == NULL) 36 return (0); 37 while (i < (unsigned int)ac) 38 { 39 stock_str[i].size = strlen(av[i]); 40 stock_str[i].str = av[i]; 41 stock_str[i].copy = strcpy(stock_str[i].copy, av[i]); 42 i++; 43 } 44 return (stock_str); 45} 46 47#include <stdio.h> 48int main(void) 49{ 50 t_stock_str *stock; 51 char *av[] = {"abc", "abe", "aba"}; 52 printf("%lu\n", sizeof(t_stock_str)); 53 stock = strs_to_tab(3, av); 54 for (int i = 0; i < 3; i++) 55 { 56 printf("%d\n", stock[i].size); 57 } 58 59 free(stock); 60 return 0; 61}
stock_str.h
1typedef struct s_stock_str 2{ 3 int size; 4 char *str; 5 char *copy; 6} t_stock_str;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/02/23 11:43
2022/02/23 14:01