请各位高手帮忙看一下,把n=strlen(p)但是这个n不能用于for循环的条件

pww20055 2015-07-09 10:09:45
void reverse(char *p)
{
int i,n;
char temp;
/*for(n=0; *(p+n) != '\0'; n++)
continue;
n--;*/

n=strlen(p);
for(i=0; i < n-i; i++)
{
temp = p[i];
p[i] = p[n-i];
p[n-i] = temp;
}
}
但是如果把n=strlen(p);用注释掉的部分代替程序就是对的,这个程序是把字符串反向,请高手解答
...全文
175 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
按照你说的功能写的

char p[] = "wqasdflj";
	int n = strlen(p);
	for (int i = 0; i < n / 2; i++)
	{
		char ch = p[i];
		p[i] = p[n - 1 - i];
		p[n - 1 - i] = ch;
	}
king191923157 2015-07-10
  • 打赏
  • 举报
回复
i=0时 p[n-i] = p[n] = '\0' swap(p[0],p[n-i]),此时 p[0] ='\0' 这时候 按cha*读字符串 应该是空字符串吧
mymtom 2015-07-10
  • 打赏
  • 举报
回复
n=strlen(p); ===> n=strlen(p) - 1;
WangNeilZ 2015-07-10
  • 打赏
  • 举报
回复
可以呀,同四楼
pww20055 2015-07-09
  • 打赏
  • 举报
回复
对了、用n=strlen(p);的时候最后用puts(p)则只是空白的一行

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧