2015-10-31 16 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]; 
} 

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

就像这样,可能会出现几种情况,您可能会使用两个不同的变量。

相关问题