首页 > 代码库 > 字符串分割到二维字符数组中:
字符串分割到二维字符数组中:
/*
*字符串分割,把一个长的字符串(可能有空格),分割到一个二维字符数组中。
*并且输出
*
*时间复杂度O(N)
*注意在操作二维字符串数组时:使用“数组指针”操作能方便 int(*p)[LEN];
*
*/
*字符串分割,把一个长的字符串(可能有空格),分割到一个二维字符数组中。
*并且输出
*
*时间复杂度O(N)
*注意在操作二维字符串数组时:使用“数组指针”操作能方便 int(*p)[LEN];
*
*/
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<stdbool.h> #define NDEBUG #include<assert.h> #define STR_SIZE 1000 // 输入字符串长度 #define STR_LEN 50 //分割字符串最大长度 #define STR_CNT 50 //分割字符串最大数量 int str_split(char *in_str,char (*out_str)[STR_LEN]); bool is_space(char temp); void str_cpy(char *src_begin,char *src_end,char *dst); int main(void) { char in_str[STR_SIZE]; char out_str[STR_CNT][STR_LEN]; int i=0; int count; char (*out)[STR_LEN]=out_str; gets(in_str); count=str_split(in_str,out_str); while(i<count) { printf("%s\n",out[i]); i++; } return 0; } bool is_space(char temp) { if(temp==' '||temp=='\n'||temp=='\t'||temp=='\v') return true; else return false; } //使用指针数组把二维数组传递进去方便操作 int str_split(char *in_str,char (*out_str)[STR_LEN]) { char *temp_in_str; int count=0; assert(in_str!=NULL&&out_str!=NULL); while(in_str!='\0') { while(is_space(*in_str)) in_str++; if(*in_str=='\0')break; temp_in_str=in_str; while((*in_str!='\0')&&(!is_space(*in_str))) { in_str++; } str_cpy(temp_in_str,in_str,out_str[count++]); } return count; } void str_cpy(char *src_begin,char *src_end,char *dst) { assert((src_begin!=NULL)&&(src_end!=NULL)&&(dst!=NULL)); while(src_begin!=src_end) *dst++=*src_begin++; *dst='\0'; return; }
程序运行结果:
[trageday@lei-yum code_test]$ gcc -o string_cat string_cat.c /tmp/ccW8eX4y.o: In function `main': string_cat.c:(.text+0x2d): warning: the `gets' function is dangerous and should not be used. [trageday@lei-yum code_test]$ ./string_cat dsdd dda grgr hth jjyjyjyjj ththt dsdd dda grgr hth jjyjyjyjj ththt
字符串分割到二维字符数组中:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。