我不明白为什么我们需要使用不同的变量,如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