[C语言][编程]将字符串分割到字符串数组中
来源:互联网 发布:ps合成图片软件 编辑:程序博客网 时间:2024/04/20 02:50
学习Redis的sds.c文件中,有一个关于将字符串分割到字符串数组中的代码,我学习并实现了一下,但没有考虑内存问题和其它的一些误操作的问题,换言之,只实现了最基本的功能。
//该程序实现的是将字符串分割成子字符串/*例如输入"123/456/7/89/1","/"作为分隔符,程序会返回:123 456 7 89 1*/#include<stdio.h>#include<string.h>void splitlen(char* str,int str_len,char* del,int del_len){ int cmp_len=str_len-del_len+1; char result[10][10]; int index=0,start=0; int j=0; if(memcmp(str,del,del_len)==0)//去掉前面的分隔符,例如输入路径时:/home/zhangbo/C++/code,把最前面的"/"去掉 { j=del_len; start=del_len; } for(;j<cmp_len;j++){ if(memcmp(str+j,del,del_len)==0){ int copy_len=j-start; strncpy(result[index],str+start,copy_len); result[index][copy_len+1]='\0'; index++; start=j+del_len; }} strncpy(result[index],str+start,str_len-start); result[index][str_len-start+1]='\0'; index++; for(int i=0;i<index+1;i++) { printf(result[i]); printf("\n"); }}int main(){ char* str="/123/45/678/90"; int str_len=14; char* del="/"; int del_len=1; splitlen(str,str_len,del,del_len); //char result[100][100]; //strncpy(result[0],str,3); //printf(result[0]); return 0;}
在实现过程中,我遇到了一些问题,总结在下面:
1.一个数组存放的是字符串,如何将这个数组输出?
#include<stdio.h>int main(){ char* str[]={"abc","def","opq"}; int len=3; for(int i=0;i<len;i++){ printf(str[i]); } return 0;}#include<stdio.h>int main(){ char* str[3];//字符串个数不可省略 str[0]="abcd"; str[1]="efgh"; str[2]="ijkl"; int len=3; for(int i=0;i<len;i++){ printf(str[i]); } return 0;}2.char **arr和char* arr[]的区别
char* arr[]可以在声明的时候确定数组的大小,但是char** arr却不可
之后我上网找了下相关资料,发现利用string.h中的strtok函数会更加方便。现将实现贴在下面,方便以后查找。
#include <stdio.h>#include <string.h>int main(void){ char str[] = "/home/zhangbo/C++/code/test";/*待分隔的原字符串*/ char seg[] = "/"; /*分隔符这里为逗号comma,分隔符可以为你指定的,如分号,空格等*/ char charlist[50][50]={""};/*指定分隔后子字符串存储的位置,这里定义二维字符串数组*/ int i =0; char *substr= strtok(str, seg);/*利用现成的分割函数,substr为分割出来的子字符串*/ while (substr != NULL) { strcpy(charlist[i],substr);/*把新分割出来的子字符串substr拷贝到要存储的charlsit中*/ i++; printf("%s\n", substr); substr = strtok(NULL,seg);/*在第一次调用时,strtok()必需给予参数str字符串, 往后的调用则将参数str设置成NULL。每次调用成功则返回被分割出片段的指针。*/ } getchar();/*press enter key to continue*/ return 0;}
1
0 0
- [C语言][编程]将字符串分割到字符串数组中
- [C 语言]将一字符串分割,并将结果保存到数组里面 separate_string_to_array
- 【C编程】将字符串t复制到字符串 s 中
- 字符串分割到二维字符数组中:
- C语言字符串分割
- C语言分割字符串
- C 语言分割字符串
- C语言中利用strtok分割字符串
- C语言中字符串数组
- 根据分隔符将一个长字符串分割保存到动态数组中
- 根据分隔符将一个长字符串分割保存到动态数组中(第二种方法)
- 字符串分割存储到数组
- 如何将字符串复制到数组中
- 将字符串截取到二维数组中
- c语言练习(4)--逗号分割字符串形成二维数组
- C语言 字符串用指针数组将字符串进行排序
- C语言字符串分割函数
- c语言实现字符串分割
- 大数据实时处理实战
- Java前期(静态)绑定和后期(动态)绑定
- UltralEdit替换回车/换行符
- 求两个正整数的最大公约数
- Tomcat源码学习-1-初始化
- [C语言][编程]将字符串分割到字符串数组中
- python装饰器
- 未能正确加载包“Microsoft.Data.Entity.Design.Package.MicrosoftDataEntityDesignPackage
- httpservlet
- java多线程(13)--线程同步工具之CountDownLatch
- Java夯实基础(泛型)
- NULL和'\0'的区别
- Linux重要目录详解
- Unity3D新手上路小心之一