字符串列表的C语言实现:c
前两天需要用到字符串数组,需要动态的增强和削减,类似于java里的ArrayList Sing 提供的功能,但C里又没有现成的库和函数,所以就自己动手写了一个。可能会有伴侣需要,废话也不多说了,挺直把代码贴出来: ilude stdio.h  include stdlib.h  include string.h  typef struct{  char **list; //用字符串数组来存放字符串列表  int size; //子字符串数量 }st_strlist;  * 初始化一个字符串列表  * 注重:strlist_malloc() 和 strlist_(st_strlist*) 要配对用法 st_strlist* strlist_malloc()  st_strlist *strlist = (st_strlist*)malloc(sizeof(st_strlist));  mem(strlist, 0, sizeof(st_strlist));  return strlist;  * 在strlist列表的末端增强一个字符串 int strlist_a(st_strlist *strlist, char *str)  int len = strlen(str);  strlist- size++;  strlist- list = (char**)realloc(strlist- list, sizeof(char*) * strlist- size);  if(strlist- list == NULL){  /* out of memory! */  printf( error: not enough memory (realloc returned NULL)\n  strlist- size--;  return -1;  strlist- list[strlist- size-1]=(char*)malloc(len+1);  mepy(strlist- list[strlist- size-1], str, len);  (strlist- list[strlist- size-1])[len]=0;  return strlist- size;  * 在字符串列表的ind序号后插入str字符串 int strlist_insertAfter(st_strlist *strlist, char* str, int index)  int i, len;  if(index = strlist- size){  return -1;  len = strlen(str);  strlist- size++;  strlist- list = (char**)realloc(strlist- list, sizeof(char
*) * strlist- size);  for(i= strlist- size-1; i index+1; i--){  strlist- list[i] = strlist- list[i-1];  strlist- list[index+1] = (char*)malloc(len+1);  memy(strlist- list[index+1], str, len);  strlist- list[index+1][len]=0;  return 0;  * 删除字符串列表strlist末端的字符串 int strlist_removeLast(st_strlist *strlist){  if(strlist- size =0){  return -1;  free(strlist- list[strlist- size-1]);  strlist- size--;  return strlist- size;  * 删除字符串列表index位置处的字符串 int strlist_removeAt(st_strlist *strlist, int index)  int i;  if(index = strlist- size){  return -1;  free(strlist- list[index]);  for(i=index; i strlist- size-1; i++){  strlist- list[i] = strlist- list[i+1];  strlist- size--;  return strlist- size;  * 猎取strlist中index处的字符串。 char* strlist_getStrAt(st_strlist *strlist, int index)  if(strlist==NULL || index =strlist- size){  return NULL;  return strlist- list[index];  * 推断字符串列表strlist内是否包含了字符串str。 int strlist_contains(st_strlist *strlist, char* str)  int i;  for(i=0; i strlist- size; i++){  if(0 == (str(strlist- list[i], str))){  return 1;  return 0;  * 释放字符串列表占用的内存空间 int strlist_free(st_strlist *strlist)  int i;  if(!strlist){  return -1;  for(i=0; i strlist- size; i++){  free(strlist- list[i]);  free(strlist- list);  free(strlist);  return 0;  * 打印字符串列表的相关信息 vo strlist_infolog(st_strlist *strlist)  int i;  printf( \n \n  printf( strlist info:\n  printf( strlist size: %d\
n , strlist- size);  for(i=0; i strlist- size; i++){  printf( %d, %s\n ,i, strlist- list[i]); int main(int argc, char *argv[])  printf( hello c_strlist!  st_strlist *strlist = strlist_malloc();  strlist_infolog(strlist);  strlist_add(strlist,(char*) aaaa  strlist_infolog(strlist);  strlist_add(strlist,(char*) bbbb  strlist_infolog(strlist);  strlist_add(strlist,(char*) 字符串列表测试  strlist_infolog(strlist);  strlist_insertAfter(strlist, (char*) ccccc , 1);  strlist_infolog(strlist);  printf( \nis strlist contians \ 123\ ? %d\n ,  strlist_contains(strlist,(char*) 123 ));  printf( \nis strlist contians \ 字符串列表测试\ ? %d\n ,  strlist_contains(strlist,(char*) 字符串列表测试 ));  strlist_removeLast(strlist);  strlist_infolog(strlist);  printf( \nis strlist contians \ 字符串列表测试\ ? %d\n ,  strlist_contains(strlist,(char*) 字符串列表测试 ));  strlist_removeAt(strlist,1);  strlist_infolog(strlist);
c语言如何创建字符串数组

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。