在编写程序是发现string.h中的strtok有些和想象的不同
比如对字符串“|2|”以"|"切分时,原以为会返回,第一为空字符串,第二个为2 ,第三个为空字符串。但是当使用时发现,第一为2,二、三均为NULL
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* split(const char *strToken,const char* strDelimit)
{
char *p;
char *pd;
static char *ps ;
if (strToken != NULL)
ps = strToken;
p = ps;
while (*ps != '\0 ')
{
pd = strDelimit;
while ( (*pd != '\0') && (*pd != *ps))
pd ++;
if (*pd == *ps)
{
*ps = NULL;
ps++;
return p;
}
else
ps++;
}
ps = NULL;
}
int main(int argc, char *argv[])
{
char str[10]="|2|";
char * first=strtok(str,"|");
char * second=strtok(NULL,"|");
char * third=strtok(NULL,"|");
printf("first:%s\n",first);
printf("second:%s\n",second);
printf("third:%s\n",third);
first=split(str,"|");
second=split(NULL,"|");
third=split(NULL,"|");
printf("first:%s\n",first);
printf("second:%s\n",second);
printf("third:%s\n",third);
system("PAUSE");
return 0;
}
打印结果
first:2
second:<NULL>
third:<NULL>
first:
second:2
thirsd:
分享到:
相关推荐
需要注意的是,`strtok`函数在处理字符串时会改变原字符串,因为它会在分隔符处插入空字符。此外,`strtok`不是线程安全的,因此在多线程环境中应谨慎使用。为了确保程序的健壮性,可以考虑使用更安全的替代方法,如...
C++字符串分割源码,破解版VC助手,兼容多个windows版本
C++中的`strtok()`函数是一个用于字符串分割的实用工具,它允许我们将一个大的字符串分解成多个由特定分隔符分隔的子字符串。下面是对`strtok()`函数的详细解释和使用示例。 **函数原型:** ```cpp char *strtok...
- `strtok`:分割字符串,按指定分隔符切分字符串并返回子串。 - `strstr`:在字符串中查找子串,返回子串的起始位置或NULL。 - `memcmp`:比较两个内存区域,返回值表示两者前n个字节的差异。 - `memcpy`:复制内存...
`str2mat`用于创建字符串数组,`deblank`和`strtrim`可以去除字符串首尾的空格,`strrep`实现字符串替换,`strread`进行格式化读取,而`strtok`则能将字符串按指定分隔符切分。 架构数组,即结构体数组,是MATLAB中...
- 自定义字符处理函数,如分割字符串(根据特定分隔符切分),检查是否为命令关键字等,可以使用`std::stringstream`或`std::strtok`等函数。 3. **代码重用**: - 使用面向对象编程(OOP)设计模式,如封装、...
C语言中的`strtok()`函数可以用于此目的,它可以按照指定的分隔符切分字符串。 3. **命令识别**:解析器需要识别出哪个单词是实际的命令,哪些是命令的参数。这可能涉及到创建一个命令字典,用来检查用户输入的命令...
14. `strtok()`使用时应谨慎处理空格和连续的分隔符,可能导致意外的字符串切分。 15. `gets()`函数容易导致缓冲区溢出,应避免使用,推荐使用`fgets()`替代。 16. C语言的词法分析在长度规则上采用固定长度的词法...
这涉及到字符串操作,如查找空格、切分参数等。可以使用`std::string`类的方法,或者使用`strtok()`函数来完成。 2. **进程创建**:为了执行这些命令,我们需要创建子进程来运行相应的系统调用。这可以通过`fork()`...
这通常涉及使用`strtok()`或`sscanf()`函数来分割字符串,根据逗号进行切分。 4. **数据写入**:当需要更新或添加新数据时,`fprintf()`函数用于向文件写入数据。需要注意的是,为了保持CSV格式,每个字段间应有...