当前位置: 首页 > news >正文

C primer plus (第六版)第十一章 编程练习第10题

题目:

10.编写⼀个函数接受⼀个字符串作为参数,并删除字符串中的空格。在⼀个程序中测试该函数,使⽤循环读取输⼊⾏,直到⽤⼾输⼊⼀⾏空⾏。该程序应该应⽤该函数读取每个输⼊的字符串,并显⽰处理后的结果。

思路:

1. 移除空格函数本质上是用空格后面的字符前移填充掉空格字符,因为空格直接删除后空格位填充什么?填充'\0'字符串在空格处结束?

2. 原书编程练习答案用指针完成相应操作。

3. AI给出的编程答案也是用指针完成相应操作。

4. 同样与之前程序类似,用while()建立循环,不断提示用户输入字符串,运行函数删除字符串中的空格然后输入删除空格后的字符串,直到用户输入空行(回车)退出循环。

程序1:

#include <stdio.h>
#include <string.h>
#define MAXLEN 50
char * s_gets(char * st, int n);
char * space_remove(char * st);
int main()
{char st[MAXLEN];puts("Please enter a string.");while(s_gets(st, MAXLEN) && st[0] != '\n'){space_remove(st);puts(st);puts("Please enter next string or Enter to quit.");}return 0;
}char * space_remove(char * st)      //空格移除函数
{int size;int i,j;size = strlen(st);          for ( i = 0; i <= size; i++){while (st[i] == ' '){j = i;for (;j <= size; j++){st[j] = st[j+1];}}}
}char * s_gets(char * st, int n)     //字符串输入函数
{char * ret_val;char * find;ret_val = fgets(st, n, stdin);if(ret_val){find = strchr(st, '\n');if(find)*find = '\0';elsewhile (getchar() != '\n')continue;}return ret_val;
}

程序2(AI编程答案):

#include <stdio.h>
#define MAX_INPUT_LEN 1000  // 最大输入长度// 函数声明:删除字符串中的所有空格,返回处理后的字符串
void remove_spaces(char *str);
// 辅助函数:安全读取一行输入
char *read_line(char *str, int max_len);int main(void) {char input[MAX_INPUT_LEN];printf("=== 字符串空格删除程序 ===\n");printf("请输入字符串(输入空行结束程序):\n");// 循环读取输入,直到用户输入空行while (1) {printf("> ");// 读取一行输入if (read_line(input, MAX_INPUT_LEN) == NULL) {break;  // 读取失败时退出}// 检查是否为空行if (input[0] == '\0') {break;}// 调用函数删除空格remove_spaces(input);// 显示处理后的结果printf("处理后: %s\n", input);}printf("程序结束。\n");return 0;
}// 函数定义:删除字符串中的所有空格
void remove_spaces(char *str) {char *src = str;  // 源指针,用于读取字符char *dest = str; // 目标指针,用于写入字符// 遍历整个字符串while (*src != '\0') {// 如果当前字符不是空格,则复制到目标位置if (*src != ' ') {*dest = *src;dest++;  // 移动目标指针}src++;  // 移动源指针}// 在处理后的字符串末尾添加结束符*dest = '\0';
}// 辅助函数:安全读取一行输入,处理换行符
char *read_line(char *str, int max_len) {char *result = fgets(str, max_len, stdin);if (result != NULL) {// 查找换行符并替换为字符串结束符int i = 0;while (str[i] != '\n' && str[i] != '\0') {i++;}// 替换换行符为结束符if (str[i] == '\n') {str[i] = '\0';} else {// 如果输入过长,清空输入缓冲区while (getchar() != '\n') {continue;}}}return result;
}

程序3(原书编程练习答案):

#include <stdio.h>
#include <string.h>     // 需要用到strchr()函数
#define LEN 81
int drop_space(char * s);
char * s_gets(char *st, int n);int main()
{char orig[LEN];puts("Enter a string of 80 characters or less:");while(s_gets(orig, LEN) && orig[0] != '\0'){drop_space(orig);puts(orig);puts("Enter next string (or just Enter to quit):");}puts("Bye!");return 0;
}int drop_space(char * s)
{char * pos;while (*s)      //等同于while (*s != '\0'){if (*s == ' '){pos = s;do{*pos = *(pos + 1);pos++;} while (*pos);}elses++;}
}char * s_gets(char * st, int n)
{char * ret_val;char * find;ret_val = fgets(st, n, stdin);if(ret_val){find = strchr(st, '\n');if (find)*find = '\0';elsewhile(getchar() != '\n')continue;}return ret_val;
}

http://www.dtcms.com/a/398267.html

相关文章:

  • AgentScope Studio 安装与测试
  • 长沙房产交易中心官网做seo网站空间
  • 金融培训网站源码淘宝基地网站怎么做
  • Spark核心Storage详解
  • 高系分二十:微服务系统分析与设计
  • 深度学习----ResNet(残差网络)-彻底改变深度神经网络的训练方式:通过残差学习来解决深层网络退化问题(附PyTorch实现)
  • 脑电模型实战系列:入门脑电情绪识别-用最简单的DNN模型起步
  • 赣州企业网站建设比较火的推广软件
  • 广州公司网站制作网页游戏排行榜20
  • 算法提升之单调数据结构-(单调队列)
  • PHP 线上环境 Composer 依赖包更新部署指南-简易版
  • 设计模式-原型模式详解
  • ESP8266与CEM5826-M11毫米波雷达传感器的动态检测系统
  • [原创]怎么用qq邮箱订阅arxiv.org?
  • 设计模式-中介者模式详解
  • 【探寻C++之旅】第十四章:简单实现set和map
  • 牛客:机器翻译
  • 20250925的学习笔记
  • 域名不同网站程序相同wordpress多门户网站
  • 淘宝API商品详情接口全解析:从基础数据到深度挖掘
  • 【低代码】百度开源amis
  • 求推荐专业的网站建设开发免费商城
  • java面试day4 | 微服务、Spring Cloud、注册中心、负载均衡、CAP、BASE、分布式接口幂等性、xxl-job
  • 高QE sCMOS相机在SIM超分辨显微成像中的应用
  • C++设计模式之创建型模式:原型模式(Prototype)
  • Node.js/Python 调用 1688 API 实时拉取商品信息的实现方案
  • OpenLayers地图交互 -- 章节九:拖拽框交互详解
  • 浅谈 Kubernetes 微服务部署架构
  • 媒体资源云优客seo排名公司
  • 企业如何构建全面防护体系,应对勒索病毒与恶意软件攻击?