您好,登錄后才能下訂單哦!
1,計數字符串個數,被調函數按需分配內存,將處理后的字符串儲存在分配的內存,返還該內存的首地址
int function (char *source, char **rec_mem)
因為內存是被調函數申請,因此可以節約控制內存的使用;
不好的地方是,在主調內存中可能造成內存泄露
int clear(char *string_in, char **string_after) //接口設計:一級指針輸入源字符串,分配新空間存放后,二級指針返還地址 { //校驗 int count = 0; int ret = 0; if (string_in == NULL ){ ret = -1; printf("err: string_in == NULL\n"); return ret; } char *str = string_in; char *str_rec; //計數 while (*(str) != '\0'){ if (*(str) != ' '){ count++; } str++; } str = string_in; //分配內存 *string_after = (char *)malloc(sizeof(count + 1); str_rec = *string_after; //處理,寫入到新分配的內存 while (*(str) != '\0'){ if (*str != ' '){ *str_rec = *str; str_rec++; } str++; } //末尾添加結束 *str_rec = '\0'; return ret; }
2,主調函數提供源字符串,輸出區內存塊
int function(char *source_str, char *out_str_mem)
除外空格和結束符,一律轉存,內存塊末尾添加結束符
int dislodge_blank_from_str(char *source_str, char *output_buffer) { char *p = source_str; char *r = output_buffer; if (source_str == NULL){ printf("err:source_str == NULL\n"); return -1; } if (output_buffer == NULL){ printf("err:output_buffer == NULL\n"); return -1; } int i = 0; char temp[200] = {0}; while( (*p) != '\0'){ if ((*p) != ' '){ temp[i] = (*p); i++; } p++; } temp[++i] = '\0'; i = 0; while(temp[i] != '\0'){ (*r++) = temp[i++]; } *(++r) = '\0'; return 0; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。