2015-10-31 52 views
-2

我不明白爲什麼我們需要使用不同的變量,如i,j來訪問兩個不同字符串的元素。例如,雖然從一個字符串中的字符複製到另一個:爲什麼我們使用不同的變量(i,j)來訪問不同的字符串元素?

for(i=0;i<strlen(s);i++){ 
p[j]=s[i]; 
} 

爲什麼我們不能只使用p[i],而不是說p[j]如在上面的代碼?爲什麼它不起作用?爲什麼我們需要一個單獨的變量j來訪問第二個字符串的元素,而不是使用相同的i? 如果問題太愚蠢,請道歉。

+0

因爲你有錯誤? – juanchopanza

+1

當這些字符串的長度不同時,您可能會在編制索引時出現段錯誤 – ForceBru

+1

這就像是上車,撞到樹上然後問:「爲什麼我們不能正常開車?爲什麼我們必須開車他們成樹?「我們不知道是什麼讓您或其他人編寫此代碼。還要注意,使用'strlen'作爲循環終止條件是很危險的,因爲它最有可能導致在每次迭代之後調用該函數,這可能會顯着減慢程序的速度。 – szczurcio

回答

1

其實,這看起來不對。它確實應該是

p[i]=s[i]; 

如果這不起作用,您的代碼一定有其他錯誤。

0

這個問題的答案是,它取決於具體情況。

讓我們拿2個例子。

strint hello必須從一個數組複製到另一個數組。那麼你必須使用i這兩個陣列。

for(i=0;i<strlen(s);i++){ 
    p[i]=s[i]; 
} 

但是,讓我們假設你想只複製一個字符串的一部分。假設從hello你想複製只有​​部分。要保留​​部分,新字符串必須只有3 char長。字符串​​將從索引0存儲在新字符串中。但在舊的字符串hello它是從索引2。爲此,你需要2個變量。該代碼,這將是

int j = 0; 
for(i=2;i<strlen(s);i++, j++){ 
    p[j]=s[i]; 
} 

另外一個,我可以想到的是,如果你只是想從一個字符串拿起特定的字符。

就像這樣,可能會出現幾種情況,您可能會使用兩個不同的變量。

相關問題