下面是求字符串的全排列,遇到了一个问题:在字符交换的时候, *start = *end;无法赋值, 是因为无法修改常量字符串吗? 我试了下重新建一个数组, 用数组下标是可以修改的,比如swap(&a[0], &a[1]), 这个该怎么理解,谢谢!
void swap(char *start, char *end)
{
char temp;
temp = *start;
*start = *end;
*end = temp;
}
void permutation(char *string, char *start)
{
if (NULL == string || NULL == start)
{
return;
}
printf("string: %s, start = %c\n", string, *start);
if (*start == '\0')
{
printf("%s ", string);
}
else
{
for (char *p = start; *p != '\0'; p++)
{
printf("*p=%c, *start=%c", *p, *start);
swap(p, start);
printf("current p: %c, start = %c", *p, *start);
permutation(string, start+1);
swap(p, start);
}
}
}
int main(int argc, char const *argv[])
{
permutation("abc", "abc");
return 0;
}
C语言字符交换问题
答案:1 悬赏:10 手机版
解决时间 2021-02-08 02:57
- 提问者网友:遁入空寂
- 2021-02-07 14:18
最佳答案
- 五星知识达人网友:玩家
- 2021-02-07 15:41
char temp;
temp=*p2;
*p2=*p1;
*p1=temp;
这一段,表示只交换首字母,应使用 strcpy()函数进行复制操作,,,
希望能解决您的问题。
temp=*p2;
*p2=*p1;
*p1=temp;
这一段,表示只交换首字母,应使用 strcpy()函数进行复制操作,,,
希望能解决您的问题。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯