當前位置:首頁 » 編程語言 » 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/

熱點內容
工作站伺服器的視頻ip怎麼看 發布:2025-01-08 13:09:15 瀏覽:648
唱吧上傳卡住 發布:2025-01-08 12:52:23 瀏覽:530
烤雞存儲 發布:2025-01-08 12:50:16 瀏覽:792
android獲取電量 發布:2025-01-08 12:44:42 瀏覽:760
samp伺服器如何設置ip直播 發布:2025-01-08 12:35:20 瀏覽:123
5七的演算法 發布:2025-01-08 12:30:59 瀏覽:446
linuxsvn配置 發布:2025-01-08 12:19:11 瀏覽:380
蘋果扁頭耳機如何在安卓手機上用 發布:2025-01-08 12:17:37 瀏覽:109
為什麼解綁卡還要密碼 發布:2025-01-08 12:13:51 瀏覽:73
反編譯得到源代碼的比例 發布:2025-01-08 12:12:36 瀏覽:620