1
實施例:重用的strtok的是給空
#include<stdio.h>
#include<string.h>
int main()
{
char str[1024];
char *buff,*temp, *result=NULL;
char tok[]=" ";
printf("enter string:\n");
gets(str);
buff=str;
result= strtok(buff,tok);
while(result != NULL)
{
printf("%s\n",result);
result = strtok(NULL,tok);
}
printf("\n");
char tok1[]= " ";
temp=str;
result= strtok(temp,tok1);
while(result != NULL)
{
printf("%s\n",result);
result = strtok(NULL,tok1);
}
}
**Output coming :**
enter string:
Hello how are you
Hello
how
are
you
Hello
**But It should give:**
enter string:
Hello how are you
Hello
how
are
you
Hello
how
are
you
爲什麼函數strtok打印第一個字之後給予空(即你好)。 我正在使用另一個變量,並初始化它,也使用另一個標記變量以及如何獲得期望結果? strtok是否需要重複使用它
但我沒有在strtok內使用str ..我使用了buff。 –
'strtok()'不會修改輸入字符串。它將一個靜態指針內部存儲到最後一個令牌返回後的字符串中的位置,並在隨後的調用中使用該指針。 'strtok_r()'是非標準的,所以你應該在你的帖子中提到當他告訴他替換使用標準庫函數時。 –
@ user3065636:'buff'是一個'char *',這意味着它的值只是一個指向'str'(str的第一個字符的內存地址)的開始處的指針。所以'buff'只是指向'str'_,這就是'strtok'在這裏改變的地方 –