C 語言字串分割函式 p = strtok(NULL, " ");
阿新 • • 發佈:2019-01-08
原始碼:
#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; }