首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

初学者求问大神

2013-08-09 
菜鸟求问大神求问各位大神,这个代码总是编译不通过。问题出在a[i]a[(i+n)%len]这一句上?求问为什么#inclu

菜鸟求问大神
求问各位大神,这个代码总是编译不通过。问题出在            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";


这样做是没给 a开辟空间的.
换成 char a[20] = "abcdefg";

[解决办法]
引用:

char *a = "abcdefg";


这样做是没给 a开辟空间的.
换成 char a[20] = "abcdefg";



不是没有开辟空间,是存放在静态区,也就是代码段中的!
它的值不是能被修改的!所以导致错误的!
char a[20] = "abcdefg"; 存放在栈去,可以修改,所以没有问题!

热点排行