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

熱點內容
c語言地圖 發布:2025-07-02 09:00:14 瀏覽:488
計算機的主存儲器是指軟盤的容量 發布:2025-07-02 08:53:49 瀏覽:237
為什麼都說歐曼價格高配置低 發布:2025-07-02 08:53:00 瀏覽:547
300人用什麼電腦伺服器好 發布:2025-07-02 08:47:42 瀏覽:902
52好壓縮 發布:2025-07-02 08:24:16 瀏覽:246
javahttp發送http請求 發布:2025-07-02 08:17:05 瀏覽:226
美國編譯的青少經典書第三輯 發布:2025-07-02 08:16:59 瀏覽:949
阿里雲伺服器強制重啟 發布:2025-07-02 08:14:55 瀏覽:663
sql的procedure 發布:2025-07-02 08:14:54 瀏覽:819
拼多多腳本定製 發布:2025-07-02 08:14:12 瀏覽:304