C語(yǔ)言庫(kù)函數(shù)strtok()怎么使用

小億
94
2023-12-07 09:53:44

C語(yǔ)言庫(kù)函數(shù)strtok()用于將字符串分割成若干個(gè)子字符串。它的使用步驟如下:

  1. 首先,需要包含頭文件<string.h>。
  2. 然后,聲明一個(gè)字符指針變量來(lái)接收分割后的子字符串。
  3. 調(diào)用strtok()函數(shù)來(lái)進(jìn)行分割。函數(shù)原型為:char *strtok(char *str, const char *delim)。第一個(gè)參數(shù)是要分割的字符串,第二個(gè)參數(shù)是分割符,可以是一個(gè)字符串。
  4. 第一次調(diào)用strtok()函數(shù)時(shí),需要將要分割的字符串作為第一個(gè)參數(shù)傳入。后續(xù)調(diào)用時(shí),傳入NULL作為第一個(gè)參數(shù)即可。
  5. 每次調(diào)用strtok()函數(shù)后,返回的指針指向一個(gè)子字符串,可以通過(guò)該指針來(lái)訪問(wèn)該子字符串。
  6. 循環(huán)調(diào)用strtok()函數(shù),直到返回的指針為NULL,表示所有子字符串已經(jīng)分割完畢。

以下是一個(gè)示例代碼,展示了strtok()函數(shù)的使用方法:

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "This is a sample string.";
    const char delim[] = " ";

    // 第一次調(diào)用strtok()函數(shù)
    char *token = strtok(str, delim);

    // 循環(huán)調(diào)用strtok()函數(shù)處理剩余的子字符串
    while (token != NULL) {
        printf("%s\n", token);

        // 后續(xù)調(diào)用strtok()函數(shù)
        token = strtok(NULL, delim);
    }

    return 0;
}

上述代碼會(huì)將字符串"str"使用空格作為分割符進(jìn)行分割,并打印出每個(gè)子字符串。輸出結(jié)果如下:

This
is
a
sample
string.

需要注意的是,strtok()函數(shù)會(huì)修改原字符串,將遇到的分隔符替換成空字符’\0’。如果不希望修改原字符串,可以使用strtok_r()函數(shù)。

0