strtok()函數(shù)并不像你想的那樣可以一次切割字串。需要多次循環(huán),第二次時需要用 p = strtok(NULL, " "); 這樣的 形式。
麻城網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,麻城網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為麻城1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的麻城做網(wǎng)站的公司定做!
void main()
{ char test1[] = "Hello C World";
char *p;
p = strtok(test1, " ");
while(p)
{
printf("%s\n", p);
p = strtok(NULL, " ");
}
return 0;
}
運行結(jié)果:
Hello
C
World
直接的問題出在這句:
strcpy(str,s2);
strtok返回的指針,指向是str中相對位置;你s2之后,把s2再拷貝會str,這時的str變成了(A,C),而前面的s1指向的是str的相對位置,因此s1的指向,也從原來的(A,B)變成了(A,C),因此后面的結(jié)果也變了。
你起碼應該引入新變量,char str2[]; 然后
strcpy(str2,s2);
又:strtok會破壞原來的字符串;strcpy不要用在“源”和“目的”重疊的地方(你例子中str和s2就重疊了);后面的strcpy(v1,S5),應該注意檢測s5是否為NULL,否則容易出問題;同理strcpy(v2, s6)亦然。
#include string.h char *strtok( char *str1, const char *str2 ); 功能:函數(shù)返回字符串str1中緊接“標記”的部分的指針, 字符串str2是作為標記的分隔符。如果分隔標記沒有找到,函數(shù)返回NULL。為了將字符串轉(zhuǎn)換成標記,第一次調(diào)用str1 指向作為標記的分隔符。之后所以的調(diào)用str1 都應為NULL。
例如:
char str[] = "now # is the time for all # good men to come to the # aid of their country"; char delims[] = "#"; char *result = NULL; result = strtok( str, delims ); while( result != NULL ) { printf( "result is \"%s\"\n", result ); result = strtok( NULL, delims ); } 以上代碼的運行結(jié)果是:
result is "now " result is " is the time for all " result is " good men to come to the " result is " aid of their country" 相關(guān)主題:
一般來說,條件關(guān)鍵詞(if
else
else
if
for
while)只能作用于
緊隨其后的
第一句
代碼。
{
}的作用,你可以這么理解:是把‘被
括起來
的所有代碼’
當成
‘一句代碼’
送給關(guān)鍵詞來處理。
注意:被括起來的可以是多句,當然也可以是一句哦。
if(a
==
b)
printf(
"a
==
b");
printf(
"a
!
a
!b
");
這個時候
第二個
printf
對
if
來說不是緊隨的第一句所以不受if
限制。一定會輸出。
if(a
==
b)
{
printf(
"a
==
b");
printf(
"a
!
a
!b
");
}
這個時候,整個大括號里的(兩句
printf)就是
緊隨
if
的第一句代碼了。
本文標題:C語言之strtok函數(shù),c語言strtol函數(shù)用法
本文鏈接:http://m.rwnh.cn/article22/phpccc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導航、靜態(tài)網(wǎng)站、網(wǎng)站收錄、網(wǎng)站策劃、建站公司、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)