菜鸟求问大神
求问各位大神,这个代码总是编译不通过。问题出在 a[i]=a[(i+n)%len];这一句上?求问为什么
#include <stdio.h>
void leftmove1(char *, int n);
int main(int argc, const char * argv[])
{
// insert code here...
char *a = "abcdefg";
int n=2;
printf ("%c",a[2]);
leftmove1(a,n);
printf("%s",a);
return 0;
}
void leftmove1(char *a, int n){
int i,j,count;
int len = strlen (a);
int temp;
count =0;
i=0;
while (count<len){
j=i;
temp = a[i];
for (;(i+n)%len!=j;i=(i+n)%len){
a[i]=a[(i+n)%len];
count++;
}
a[i]=temp;
i++;
}
}
char *a = "abcdefg";
不是没有开辟空间,是存放在静态区,也就是代码段中的!
它的值不是能被修改的!所以导致错误的!
char a[20] = "abcdefg"; 存放在栈去,可以修改,所以没有问题!