我试图用这段代码搞清楚,似乎索引对我来说不起作用..
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
char *a = "abcde";
char *b = "vwxyz";
char s[10];
strcpy(s,a+0);
printf("%s\n",s);
strcpy(s+1,b);
printf("%s\n",s);
return 0;
}
希望有人可以解释,因为第一次strcpy导致了abcde。并且s [1]将达到字母'b'所以不是abvwxyz?但是正确的结果是avwxyz。
答案 0 :(得分:1)
不是
abvwxyz
吗?
没有。它将avwxyz
作为输出。 s+1
指向数组s
的第二个元素(在衰减之后),即b
。复制将从字母b
开始。 b
会覆盖v
。
答案 1 :(得分:0)
'avwxyz'是正确的答案。这是因为strcpy替换了指定索引处的字符,你可能想做s + 2会导致'abwxyz'