例えば、{"abcde","fghi",NULL}というような文字列ポインタのリストを受け取り、
その文字列を一つにつなげて、ポインタを返したいです。
演算を⾏った結果を格納する構造体を動的に割り当てる、ということなのですが、新たに構造体を定義して割り当てるということなのでしょうか?この点はコードに実装していません。
以下、考えたコードです。自分で詰まっているところや、している事にコメント入れています。
C
1#include <string.h> 2#include <stdio.h> 3#include <stdlib.h> 4 5 6 7char *function(char **argv){ 8 9 // リスト内の文字列の文字数を足し合わせる 10 int i = 0,len = 0; 11 while(argv[i] != NULL){ 12 len += strlen(argv[i]); 13 i++; 14 } 15 16 17 printf("%d\n",len); 18 char *buffer = malloc(len + 1); 19 // エラーハンドリング 20 if(buffer != NULL){ 21 int i = 0; 22 // 1文字ずつ文字列をつなげる 23 while(argv[i] != NULL){ 24 while(*argv[i] != '\0'){ 25 *buffer = *argv[i]; 26 buffer++; 27 *argv[i]++; 28 } 29 i++; 30 } 31 // 開放したら値を返しても、メモリの割当場所が不定になる? 32 free(buffer); 33 return buffer; 34 }else{ 35 return NULL; 36 } 37} 38 39int main(void){ 40 char *argv[] = {"abcde","fghi",NULL}; 41 char *buffer = function(argv); 42 printf("%s",buffer);// つなげた文字列を出力したい 43 return 0; 44}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/24 08:53