如何解决为什么C中的此字符串交换函数不交换字符串?
我尝试使用指针交换字符串,但是我不知道为什么这不交换字符串?
那么谁能解释我为什么会发生并纠正它?
#include<stdio.h>
void swap(char *str1,char *str2)
{
char *temp = str1;
str1 = str2;
str2 = temp;
}
int main()
{
char *str1 = "geeks";
char *str2 = "forgeeks";
swap(str1,str2);
printf("str1 is %s,str2 is %s",str1,str2);
getchar();
return 0;
}
输出:
str1 is geeks,str2 is forgeeks
解决方法
您要按值传递指针,以便修改其副本,而不是原始的str1
和str2
。
您可以修改swap
的签名以将指针传递给指针,然后通过解引用来修改其值:
void swap(char** str1,char** str2)
{
char* temp = *str1;
*str1 = *str2;
*str2 = temp;
}
和
char* str1 = "geeks";
char* str2 = "forgeeks";
swap(&str1,&str2);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。