当前位置:首页 » 编程语言 » c语言strtok的实现

c语言strtok的实现

发布时间: 2022-02-21 14:38:16

⑴ 怎么用普通C++来实现strtok()呀

给你一个版本,修改下达到自己想要的效果
void test(char * values)
{
char *result;
char *deli = ",; ";
while(result = strtokk(&values, deli)) //注意,values值会修改
{
printf("%s\n", result);
}
}

#include <string.h>
char * strtokk(char **stringp, char * delim)
{
char *res;

if (!stringp || !*stringp || !**stringp)
return (char*)0;

res = *stringp;
while(**stringp && !strchr(delim, **stringp))
++(*stringp);

if (**stringp)
{
**stringp = '\0';
++(*stringp);
}
return res;
}

c语言 关于strtok函数,求大神!

直接的问题出在这句:

strcpy(str,s2);

strtok返回的指针,指向是str中相对位置;你s2之后,把s2再拷贝会str,这时的str变成了(A,C),而前面的s1指向的是str的相对位置,因此s1的指向,也从原来的(A,B)变成了(A,C),因此后面的结果也变了。

你起码应该引入新变量,char str2[]; 然后

strcpy(str2,s2);

又:strtok会破坏原来的字符串;strcpy不要用在“源”和“目的”重叠的地方(你例子中str和s2就重叠了);后面的strcpy(v1,S5),应该注意检测s5是否为NULL,否则容易出问题;同理strcpy(v2, s6)亦然。

⑶ C语言中strtok用法

你的问题让我研究了一晚上,
也没弄明白,哎,
这个代码太神奇了。
不知道用什么标记了第一个字符指针的起始位置。

⑷ 请问一个C语言中strtok的问题

分隔符只能是一个字节的,"->"中的-和>都被认为是分隔符了

⑸ 我想用c语言中的strtok函数得到一个字符串中由分隔符分割的某些关键字,并处理

通过判断,可以对某些关键字进行处理,但好像没法获得当前是什么分隔符这样的信息。

⑹ c语言 strtok请教

恩, 虽然没有看过strtok的实现
不过下面这个, 即时效果应该相同的(每执行一次函数的效果); 测试代码是直接复制msdn里的, 我只写mytoken
(当然如果你原意给点分的话:p)

#include <stdio.h>

char* MyToken( char *strToken, const char *strDelimit );

int main( void )
{
char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char *token;

printf( "Tokens:\n" );

// Establish string and get the first token:
token = MyToken( string, seps ); // C4996
// Note: strtok is deprecated; consider using strtok_s instead
while( token != NULL )
{
// While there are tokens in "string"
printf( "%s\n", token );

// Get next token:
token = MyToken( NULL, seps ); // C4996
}
}
typedef int BOOL;
#define TRUE 1
#define FALSE 0

BOOL InSide( char c, const char *str )
{
while( 0 != *str )
if( c == *str )
return TRUE;
else
str++;
return FALSE;
}

char* MyToken( char *strToken, const char *strDelimit )
{
static char *strPoint = NULL;
char *strRet;
if( NULL != strToken )
strPoint = strToken;
if( NULL == strPoint )
return NULL;
while( 0 != *strPoint && InSide(*strPoint, strDelimit) )
*strPoint++ = 0;
if( 0 == *strPoint )
return strPoint = NULL;
strRet = strPoint;
while( 0 != *strPoint && !InSide(*strPoint, strDelimit) )
strPoint++;
if( 0 == *strPoint )
strPoint = NULL;
else
*strPoint++ = 0;
return strRet;
}

⑺ 关于c语言字符串中切割函数strtok的用法

strtok()函数并不像你想的那样可以一次切割字串。需要多次循环,第二次时需要用 p = strtok(NULL, " "); 这样的 形式。

void main()
{ char test1[] = "Hello C World";
char *p;
p = strtok(test1, " ");
while(p)
{
printf("%s\n", p);
p = strtok(NULL, " ");
}
return 0;
}
运行结果:
Hello
C
World

⑻ c语言,关于strtok

strtok会修改字符串,将分隔符处的字符换成\0。
你这里对常量字符串调用strtok,所以出错了。

http://www.cplusplus.com/reference/clibrary/cstring/strtok/

热点内容
朔州工业存储 发布:2025-01-07 08:29:52 浏览:655
服务器电脑适配所有硬盘吗 发布:2025-01-07 08:22:40 浏览:197
怎么清除路由器缓存 发布:2025-01-07 08:19:52 浏览:674
密码锁触屏不灵了一般是什么原因 发布:2025-01-07 08:19:10 浏览:629
光之护剑密码是多少 发布:2025-01-07 08:19:03 浏览:354
陌生性ftp 发布:2025-01-07 08:18:58 浏览:501
android监听home 发布:2025-01-07 08:18:25 浏览:684
荣放哪个配置的脱困能力强 发布:2025-01-07 08:07:30 浏览:51
剑灵灵爆脚本会不会封号 发布:2025-01-07 08:00:57 浏览:343
加工中心铣平面编程 发布:2025-01-07 07:53:32 浏览:592