1. 程式人生 > >C 語言字串分割函式 p = strtok(NULL, " ");

C 語言字串分割函式 p = strtok(NULL, " ");

原始碼:

#include <stdio.h>
#include<string.h>
int main()
{
  char str[] = "經度:111°11’11'' 緯度: 30°30'30''";
  char *p; 
  char a[]=" ";
  p = strtok(str, ":");
  int i=0;int n;
  while(p)
  {  
    printf("第%d個:%s\n", i+1,p);  
	//這裡計算次數進行賦值輸出
    p = strtok(NULL, " ");  
	i++;
  }
  printf("%d",i);
  return 0;
}

char *strtok(char *s, char *delim);

功能:分解字串為一組標記串。s為要分解的字串,delim為分隔符字串。

說明:首次呼叫時,s必須指向要分解的字串,隨後呼叫要把s設成NULL
strtok在s中查詢包含在delim中的字元並用NULL(’\0’)來替換,直到找遍整個字串。
返回指向下一個標記串。當沒有標記串時則返回空字元NULL。

函式strtok()實際上修改了有str1指向的字串。
每次找到一個分隔符後,一個空(NULL)就被放到分隔符處,函式用這種方法來連續查詢該字串。
示例:

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

int main()
{
    char *p;
    char str[100]="This is a test ,and you can use it";
    p = strtok(str," "); // 注意,此時得到的 p為指向字串:"This",即在第一個分隔  符前面的字串,即每次找到一個分隔符後,一個空(NULL)就被放到分隔符處,所以此時NULL指標指向後面的字串:"is a test ,and you can use it"。
    
    printf("%s\n",p);  // 此時顯示:This
    
    do
    {
        p = strtok(NULL, ",");  // NULL 即為上面返回的指標,即字串:
                                // "is a test ,and you can use it"。
        if(p)
            printf("|%s",p);
    }while(p);
    
    system("pause");
    return 0;
}