関数を実装していますが、それを「ライブラリ品質」の関数にしたい:
char** str_cat(char** const str, const char * const other ){
if(str==NULL)
return NULL;
if(other==NULL)
return str;
if(*str==NULL)
return str_cpy(str,other);
char* tmp=(char*)calloc(1,strlen(*str)+strlen(other)+1);
if(tmp==NULL)
return NULL;
strcat(strcpy(tmp,*str),other);
*str=tmp;
return str;
}
これは strcat() 関数 (異なる署名) のバージョンであり、極端なユース ケースを処理します。しかし、メモリ不足の障害を処理する方法は、豊富な str_xxx() API ライブラリを多用する大規模なアプリケーションには適していません。
質問: より良い解決策はありますか?