C语言自定义函数实现以特定字符分割字符串
Posted 我想月薪过万
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言自定义函数实现以特定字符分割字符串相关的知识,希望对你有一定的参考价值。
原理概括
- 双指针法
原理图解
核心代码
/******************************************************************************
* 负 责 人 : 易齐
* 创建日期 :2022-01-22 13:56:55
* 函数功能 : 以 特定字符 分隔字符串
* 输入参数 : argv: 装分隔好的字符串的指针数组 ,str: 需要分隔的字符串 , separator:分隔字符
* 输出参数 : 分隔好后 指针数组 的长度
* 返 回 值 :无
* 调用关系 :无
* 其 它 :无
******************************************************************************/
int split(char *argv[], char *str, char separator)
//定义双指针
char *start_c = str;
char *end_c = str;
//定义分隔结果编号
int index = 0;
//反复遍历
while (*end_c != '\\0')
//如果遇到了分隔符
if (*end_c == separator)
//分隔符连续出现
if (start_c == end_c)
argv[index] = NULL;
//分隔符中间有字符
else
argv[index] = start_c;
//将分隔符置换为结束符
*end_c = '\\0';
index++;
start_c = end_c + 1;
end_c++;
//处理最后一次遍历结果
if (start_c != end_c)
argv[index] = start_c;
//处理最后一次遍历结果 如果两个指针位置一直,说明数据无效
else
index--;
//返回分隔后数组的长度
return index;
测试代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define GPRMC_MAX_DATA_NUMS 14
int split(char *argv[], char *str, char separator);
int main()
// $GNRMC,,V,,,,,,,,,,N,V*37
char str[] = "$GNRMC,,V,,,,,,,,,,N,";
char *argv[GPRMC_MAX_DATA_NUMS];
int len = split(argv, str, ',');
int i = 0;
for (i = 0; i <= len; i++)
printf("=%s=\\n", argv[i]);
return 0;
/******************************************************************************
* 负 责 人 : 易齐
* 创建日期 :2022-01-22 13:56:55
* 函数功能 : 以 特定字符 分隔字符串
* 输入参数 : 装分隔好的字符串的指针数组 ,需要分隔的字符串 , 分隔字符
* 输出参数 : 分隔好后 指针数组 的长度
* 返 回 值 :无
* 调用关系 :无
* 其 它 :无
******************************************************************************/
int split(char *argv[], char *str, char separator)
//定义双指针
char *start_c = str;
char *end_c = str;
//定义分隔结果编号
int index = 0;
//反复遍历
while (*end_c != '\\0')
//如果遇到了分隔符
if (*end_c == separator)
//分隔符连续出现
if (start_c == end_c)
argv[index] = NULL;
//分隔符中间有字符
else
argv[index] = start_c;
//将分隔符置换为结束符
*end_c = '\\0';
index++;
start_c = end_c + 1;
end_c++;
//处理最后一次遍历结果
if (start_c != end_c)
argv[index] = start_c;
//处理最后一次遍历结果 如果两个指针位置一直,说明数据无效
else
index--;
//返回分隔后数组的长度
return index;
测试结果
以上是关于C语言自定义函数实现以特定字符分割字符串的主要内容,如果未能解决你的问题,请参考以下文章
JAVA定义一个字符串接受一段输入字符,并把他以逗号分开到字符数组。
C 语言二级指针案例 ( 字符串切割 | 返回 二维数组 作为结果 )