返回信息流求大神帮助啊!!如何实现字符数组的反序输出啊?
#include <iostream>
#include <string.h>
using namespace std;
void swap(char*pc)
{
char*pd;
int sum=0;
for(int i=0;pc[i]!='\0';i++)
{
sum++;
}
for(int i=0;i<sum;i++)
{
pd[i]=pc[sum-i-1];
}
strcpy(pc,pd);
}
void pcCout(char*pc)
{
cout<<pc<<endl;
}
int main()
{
char pa[100]="Hello Beijing";
cout<<"原数组为\n";
pcCout(pa);
cout<<"反序输出\n";
swap(pa);
pcCout(pa);
return 0;
}
我觉得是strcpy部分错了吧,可是该怎么办?[em23]
这是一条镜像帖。来源:北邮人论坛 / cpp / #71474同步于 2013/6/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于字符指针
mtx0612
2013/6/2镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
//
#include <string.h>
void swap(char*pc)
{
int sum = strlen(pc), i = 0;
char c = '\0';
for(; i < (sum >> 1); i++) // (sum >> 1) = sum / 2
{
// swap pc[i] & pc[sum - i - 1]
c = pc[i];
pc[i] = pc[sum - i - 1];
pc[sum - i - 1] = c;
}
// 直接在原指针上操作就行了~不需要在用新指针,你那样写的pd是野地址,不可控的!
// 如果一定要开辟一片新空间的话,要这么写:
// char pd[100];
// 或者:
// char* pd = new char[sum];
// 再或者:
// char* pd = (char*)malloc(sum);
// strcpy(pc,pd);
}
【 在 mtx0612 的大作中提到: 】
: [color=#DC143C]求大神帮助啊!!如何实现字符数组的反序输出啊?
: #include <iostream>
: #include <string.h>
: ...................
【 在 tonyjansan 的大作中提到: 】
: [code=c]
: //
: #include <string.h>
: ...................
谢谢了!!!成功了!!因为好没学太多C++只是,您说的野地址我还不是很明白,不过程序是编出来了!谢谢![em18]