1. 程式人生 > >在C/C++中用strtok()實現Split函式的功能

在C/C++中用strtok()實現Split函式的功能

C/C++中的Split函式是strtok()其函式原型如下:
char * strtok (char * str, const char * delimiters);

函式說明
strtok()用來將字串分割成一個個片段。引數str指向欲分割的字串,引數delimiters則為分割字串,當strtok()在引數str的字串中發現到引數delimiters的分割字元時則會將該字元改為'\0'字元。在第一次呼叫時,strtok()必需給予引數str字串,往後的呼叫則將引數str設定成NULL。每次呼叫成功則返回下一個分割後的字串指標。

返回值
返回下一個分割後的字串指標,如果已無從分割則返回NULL。


示例-1
/* strtok example */
#include <stdio.h>
#include <string.h>

int main ()
{
char str[] ="a,b,c,d*e";
const char * split = ",";
char * p;
p = strtok (str,split);
while(p!=NULL) {
printf ("%s\n",p);
p = strtok(NULL,split);
}

getchar();
return 0;

}
本例中,實現對字串'a,b,c,d*e"用逗號(,)來作界定符對字串進行分割。
輸出結果將如下所示:
a
b
c
d*e

因為delimiters支援多個分割符, 我們將本示例中的語句行
const char * split = ",";
改成 const char * split = ",*"; //用逗號(,)和星號(*)對字串進行分割

這樣輸出結果將如下所示:
a
b
c
d
e

相關推薦

C/C++中用strtok()實現Split函式功能

C/C++中的Split函式是strtok()其函式原型如下: char * strtok (char * str, const char * delimiters); 函式說明 strtok()用來將字串分割成一個個片段。引數str指向欲分割的字串,引數delimiters則為分割字串,當strtok()在

mysql 實現split函式功能實現把由空格分割的片語每個單詞的首字母轉換成大寫的功能

1.mysql沒有split這樣功能的函式,但是有的時候可能用到,可以手工編寫函式實現該功能。 下面的兩個函式是從別的地方copy過來的~ 1. 函式func_splitStringTotal:將字串按指定方式分割,並計算單元總數DELIMITER $$ CREATE FU

c語言】模擬實現strchr函式功能:在一個字串中查詢一個字元第一次出現的位置,如果沒有出現返回NULL

// 模擬實現strchr函式,功能:在一個字串中查詢一個字元第一次出現的位置,如果沒有出現返回NULL #include <stdio.h> #include <assert.h> char const* my_strchr(char cons

C#或unity中實現正弦函式

C#或unity中實現正弦函式 本類用於第一,需要繪製一條正弦曲線的朋友;第二,需要根據正弦曲線控制物體運動的朋友;裡面都有註釋,程式碼如下: unity中使用的程式碼: public class Curvy_Sin { /// <summary> /// 週期

C++比較器的實現_函式

#include <iostream> #include <algorithm> using namespace std; struct student{ int ID; int Age; int Score;

C語言:模擬實現字串函式strlen,strcpy,strcat,strcmp,strchr,strstr

什麼是C語言中的字串 字串或串(String)是由數字、字母、下劃線組成的一串字元。通常放在常量字串中或者字元陣列中。C語言中以 ‘\0’ 來作為字串的結束標記。 字元的ASCII編碼表 1.strlen 功能:字串求長 計算給定字串的(unsigned in

C語言單鏈表實現19個功能完全詳解

#include "stdafx.h" #include "stdio.h" #include <stdlib.h> #include "string.h"   typedef int elemType ;   /************************

C語言】模擬實現strchr函式.即在一個字串中查詢一個字元第一次出現的位置並返回

//模擬實現strchr函式.即在一個字串中查詢一個字元第一次出現的位置並返回 #include <stdio.h> //#include <string.h> #includ

Linux-CC/S架構例項,實現檔案傳輸功能

/*server_func.h*/ #ifndef SERVER_H #define SERVER_H #include<stdio.h> #include<stdlib.h> #include<string.h> #include

c語言】模擬實現strcat函式

簡介:strcat函式是連線兩個字串。例如:有char *str1 = “abcd”,char *str2 = “efg”,strcat (str1,str2)可以將efg連線到abcd後面,結果是abcdefg,並且存放在str1中。 函式原型:extern

C#接訊飛實現語音識別功能(windows平臺)

首先在訊飛官網下載語音識別的SDK,這些網上教程很多。(下載window平臺語音聽寫SDK) 1、建立一個C#工程 2、因為訊飛只有C/C++的介面,bi並沒有C#,需要將介面轉換為C#介面,自己先在工程中建立一個DLL類 在自己的dll中將C/C++的介面

C語言:模擬實現printf函式

4.1.模擬實現printf函式,可完成下面的功能 能完成下面函式的呼叫。  print("s ccc d.\n","hello",'b','i','t',100);  函式原型:  print(char *format, ...)  程式碼如下: #include &l

C的巨集定義實現模板函式——CC++模板函式機制實現

近日移植TightVNC,關於RectangleUpdate的編碼,處理不同色彩位深bits/pixe( 8,16,32)有著極其相似的處理方法,由於C中沒有模板函式的概念,因而採用了巨集定義來處理,與模板函式有著異曲同工之妙。現摘錄分析如下(程式碼有刪節): Rfbp

模擬實現strcpy函式功能(優化改進)

strcpy函式,字串拷貝函式,傳入兩個引數,將第二個引數的值拷貝到第一個中去。 首先,給出一個普通的程式碼: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> void

Hive使用pmod函式實現dayofweek函式功能

dayofweek在hive2.2.0開始支援,低版本的hive原生未提供dayofweek函式(獲取一個日期是星期幾的方法),所以只有我們自己編寫udf函式提供,udf就不說了,在這裡給出了一個使用hive原生函式獲取星期幾的技巧。pmod(datediff('${date}', '1920-01-01')

hibernte中用criteria實現not in功能的方法

我一直喜歡criteria,而不喜歡用hql。 Property類中提供的in方法有三個:public Criterion in(Collection values)public Criterion in(Object[] values)public Criterion in

C/C++中用va_start/va_arg/va_end實現可變引數函式的原理

C/C++中用va_start/va_arg/va_end實現可變引數函式的原理與例項詳解         在C/C++中,我們經常會用到可變引數的函式(比如printf/snprintf等),本篇筆記旨在講解編譯器藉助va_start/va_arg/va

Visual C++網路程式設計經典案例詳解 第5章 網頁瀏覽器 製作個性化介面 如何實現收藏夾功能 新增訊息響應函式

使用者將網址新增到收藏夾以後 便可以直接單擊選單選單中的網址進行瀏覽 使用者單擊選單的訊息響應函式重要 首先在CMainFrame類的標頭檔案MainFrm.h 中定義一個彈出選單的訊息響應函式 程式碼如下 afx_msg void OnMenuClick(int nID); //定

C語言 不使用strcpy 函式實現字串複製功能

#include<stdio.h> void Copy_string(char* str1, char* str2);   //函式宣告 int main() {     char str1[20];     char str2[20];     puts("請輸入字串str1:");   

c語言實現一個strcat函式功能相同的函式

extern char *strcat(char *dest,char *src); 把src所指字串新增到dest結尾處(覆蓋dest結尾處的'\0')並新增'\0'。 #include "std