相关文章推荐
暴走的电池  ·  C#开发BIMFACE系列53 ...·  4 月前    · 
慷慨大方的跑步机  ·  JSpinner·  5 月前    · 
绅士的石榴  ·  c++ curl ...·  1 年前    · 

问题描述:我们的系统通过Socket网络通讯往linux服务器上发送数据,服务器上接收的数据格式是以逗号隔开的字符串。我们需要将这个字符串按逗号作为分隔符来截取。

解决方法:使用C语言中的strtok()函数实现

代码实现(下面代码的功能是将字符串"now , is the time for all , good men to come to the , aid of their country"以逗号作为分隔符来截取,并将截取出的字符串打印出来):

#include <stdio.h>
#include <string.h>
int main()
    char str[] = "now , is the time for all , good men to come to the , aid of their country";
    char delims[] = ",";
    char *result = NULL;
    result = strtok( str, delims );
    while( result != NULL ) {
    printf( "result is \"%s\"\n", result );
    result = strtok( NULL, delims );
}
运行结果如下:

进一步:封装成实现按分隔符截取字符串的函数

#include <stdio.h>  
#include <string.h>  
void split(char str[],char delims[])
    char *result = NULL; 
    result = strtok( str, delims );  
    while( result != NULL ) {  
    printf( "result is \"%s\"\n", result );  
    result = strtok( NULL, delims );  
int main()  
    char str[] = "now , is the time for all , good men to come to the , aid of their country";  
    char delims[] = ",";  
	split(str,delims);
函数原型:  uint8_t **strsplit(uint8_t *str,uint8_t *Separator)。
函数功能:  将str字符串用特定分隔符Separator分隔为多个字符串。
函数返回:  分割后的子字符串列表指针。
注       意:存储分割后的子字符串列表的变量str_list是用动态内存分配函数malloc分配的,在使用完str_list后要及时释放其所占用的内存。
————————————————
版权声明:本文为CSDN博主「logan_lei」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_37602287/article/details/120817360
                                    4.使用strtok函数,从指定字符后截取数据。代码功能:从字符串开头,截取指定长度的字符。代码功能:从字符串末尾,截取指定长度的字符。代码功能:查找字符串中是否包含字符"s"代码功能:截取字符"d"后的所有数据。1.从左边截取指定长度的字符串。2.从右边截取指定长度的字符串。3.利用strstr查找字符串。
                                    最近在工作中要实现这样一个功能:从一个文本文件中按行读取数据,一行数据中每一列都可能含有空格,所以你要把空格给截取出来。列之间是通过TAB键分割的。我在一开始使用了C的库函数strtok这个函数。先介绍一下strtok这个函数原型:char *strtok(char *src, char *flag)参数一是你要截取的字符串,参数2是字符串中的分隔符。看一下linux的man手册是如何结束这个函数...
                                    c语言字符串分割–strtok | 逗号分隔 代码,原理是使用字符串分隔函数Strtok()函数详解:该函数包含在”string.h”头文件中函数原型:char* strtok (char* str,constchar* delimiters );函数功能:切割字符串,将str切分成一个个子串函数参数:str:在第一次被调用的时间str是传入需要被切割字符串的首地址;在后面调用的时间传入NULL。...
import pandas as pd
pd.read_csv(filename)
该读文件方式,默认是以逗号“,”作为分割符,若是以其它分隔符,比如制表符“/t”,则需要显示的指定分隔符。如下
pd_read_csv(filename,'/t')
但如果遇见某个字段包含了”/t”的字符,比如网址“www.xxx.xx/t…”,则也会把字段中的“/t”理解为分隔符。
但是如果在调用函数时,指定参数名,则不存在该问题。
即如下调用方式
read_csv(filename,sep='/t')
以上这篇pandas读取csv文件,分隔符参数se
C语言是不提供字符串类型的 ,但是它有字符串。c++或者Java是提供字符串类型的。
字符串的结束标志是\0的转义字符。在计算字符串空间长度的时候,\0作为结束标志,不算作字符串内容。
这时候我们发现空字符串的空间长度为1,原因是系统默认\0作为字符串的结束标志,不算作字符串内容,此时字符串的空间长度为1。
论\0的重要性
我们用一段代码来解释说明
在数组arr1[ ]中,我们用字
                                    本问题已经有最佳答案,请猛点这里访问。这是一个基本的问题,但我在思考解决方案时遇到了麻烦,所以我需要朝着正确的方向努力。我有一个输入文件,我要把它放入一个字符串变量中。问题是我需要将这个字符串分成不同的东西。将有3个字符串和1个int。它们用":"分隔。我知道我可以通过find()找到第一个":"的位置,但我真的不知道如何通过字符串进行处理,对于每个事物并将其放入它自己的字符串/ int中。该文件...
                                    void printfArr(char **arrayPtr, int nLength){int i = 0;for (; i < nLength; i++){printf("%s\n", arrayPtr[i]);}}int getStrArray(const char *src, char **dst){int i = 0,j = 0, nLength  = 0;char *curSta...
                                    首先来说,字符串尾部的不叫分隔符,字符串中间的才叫分隔符。
例如 Hello World, My name is Python. 中的点号就不是分隔符
将下面这个字符串切分成单个的单词。
Hello World, My name@ is Python
从上面这个例子中可以看出分隔符逗号,多个空格,@这三种。下面给出两种解决办法。
方法1 String模块的spilt()
思路: 将除了空格以外的其他分隔符全部替换为空格,然后按照空格符进行分割。
str.replace('a', 'b') 表示用 b 替换
                                    函数作用 :   分割字符串
/**********************************************************************
* Function:  split_str
* Description: Splits the target string by the specified character 
* Input:  
		psrc:		Pointer to the data to be processed
		psrc_len:	The length
                                    函数名: strtok头文件:函数原型: char *strtok(char *str1, const char *str2);功能: 用指定的分隔符分解字符串参数: char *str1 为要分解的字符串const char *str2 为分隔符字符串返回值: 返回下一个分割后的字符串指针,如果已无从分隔,则返回NULL注意: 1、函数的作用是分解字符串,所谓分解,即没有生成新串,只是...