我不明白爲什麼我們需要使用不同的變量,如i
,j
來訪問兩個不同字符串的元素。例如,雖然從一個字符串中的字符複製到另一個:爲什麼我們使用不同的變量(i,j)來訪問不同的字符串元素?
for(i=0;i<strlen(s);i++){
p[j]=s[i];
}
爲什麼我們不能只使用p[i]
,而不是說p[j]
如在上面的代碼?爲什麼它不起作用?爲什麼我們需要一個單獨的變量j
來訪問第二個字符串的元素,而不是使用相同的i
? 如果問題太愚蠢,請道歉。
我不明白爲什麼我們需要使用不同的變量,如i
,j
來訪問兩個不同字符串的元素。例如,雖然從一個字符串中的字符複製到另一個:爲什麼我們使用不同的變量(i,j)來訪問不同的字符串元素?
for(i=0;i<strlen(s);i++){
p[j]=s[i];
}
爲什麼我們不能只使用p[i]
,而不是說p[j]
如在上面的代碼?爲什麼它不起作用?爲什麼我們需要一個單獨的變量j
來訪問第二個字符串的元素,而不是使用相同的i
? 如果問題太愚蠢,請道歉。
其實,這看起來不對。它確實應該是
p[i]=s[i];
如果這不起作用,您的代碼一定有其他錯誤。
這個問題的答案是,它取決於具體情況。
讓我們拿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];
}
另外一個,我可以想到的是,如果你只是想從一個字符串拿起特定的字符。
就像這樣,可能會出現幾種情況,您可能會使用兩個不同的變量。
因爲你有錯誤? – juanchopanza
當這些字符串的長度不同時,您可能會在編制索引時出現段錯誤 – ForceBru
這就像是上車,撞到樹上然後問:「爲什麼我們不能正常開車?爲什麼我們必須開車他們成樹?「我們不知道是什麼讓您或其他人編寫此代碼。還要注意,使用'strlen'作爲循環終止條件是很危險的,因爲它最有可能導致在每次迭代之後調用該函數,這可能會顯着減慢程序的速度。 – szczurcio