我试图用这段代码来解决这个问题,但是索引似乎对我不起作用。
#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。而对于s1,这将是字母'b‘,所以它不是abvwxyz吗?不过,正确的结果是avwxyz。
发布于 2014-01-30 09:59:32
不是
abvwxyz
吗?
不是的。它将给出avwxyz作为输出。s+1指向数组s的第二个元素(衰减后),即b。复制将从字母b开始。v会覆盖b。
发布于 2014-01-30 10:09:58
“‘avwxyz”是正确答案。这是因为strcpy替换了指定索引处的字符,您可能希望执行s+2,这将导致'abwxyz‘
https://stackoverflow.com/questions/21446438
复制相似问题