为了账号安全,请及时绑定邮箱和手机立即绑定

为什么少了while(*p),程序执行只是照原样输出呢?具体情况如下?

为什么少了while(*p),程序执行只是照原样输出呢?具体情况如下?

侃侃尔雅 2021-12-04 11:07:36
函数delspace的功能是删除一个字符串中所有的空格。例如,输入字符串为"This is a string",则输出结果为"Thisisastring"。测试用主函数如下所示,请编制函数delspace。#include <stdio.h>#include <string.h>void main(){ char *delspace(char *str);char s[81],*ds;gets(s);ds=delspace(s);printf("\nResult: %s\n", ds);}char *delspace(char *str){char *p=str;while(*p){if(*p==' ')strcpy(p,p+1);elsep++;}return str;}我的疑问是为什么少了while(*p),程序执行只是照原样输出。
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

你的函数里面
if(*p==' ')
strcpy(p,p+1);
else
p++;
也就是说 如果p == ' ' 你就把P+1的值拷到p这里,但是拷完了P的位置还是原位置啊,然后下一个循环里 万一刚才P+1的值也是 ' ' 呢你不就死循环了啊。

查看完整回答
反对 回复 2021-12-07
?
九州编程

TA贡献1785条经验 获得超4个赞

while(*p)是在从头到尾查找串里的每个字符
没有它只检查了串里第一个字符

查看完整回答
反对 回复 2021-12-07
  • 2 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信