改错题_101
来源:互联网 发布:手机备份软件排名 编辑:程序博客网 时间:2024/05/16 00:49
1. 第7行,将if (b >= 'A'&&b <= 'Z') b += 'b' - 'A' 改成 if (b >= 'A'&&b <= 'Z') b += 'a' - 'A'
题解:这里通过将’a’ - ‘A’的差值作为把小写改变成大写的方法, 翻译成ASCII码就是用97 - 65, 再通过将字符变量b加上这个值, 将b变换成小写字母。
2. 第16行,将 equal(p, q) 改为 equal(*p, *q)
题解:因为函数equal的参数为(char, char),所以在调用的时候不能使用p, q这两个字符指针。
ps: 还可以将参数进行修改,不过那样对函数也要进行一定的修改,如下
int Equal(char* a, char* b)
{
if (*a >= 'A'&&*a <= 'Z') *a += 'a' - 'A';
if (*b >= 'A'&&*b <= 'Z') *b += 'a' - 'A';
return *a == *b;
}
个人觉得还是第一种比较好。
3. 第21行, 将 return 0 改为 return NULL
题解:因为函数substr的返回值类型为char*,所以返回NULL。
4. 第28行,将if ((p = substr(str, s2))!= 0) 改为 if ((p = substr(str, s2)) == NULL)
题解:通过阅读函数substr可以知道,当未找到子串时,返回NULL,找到的时候返回s所指向的地址,所以应该在等于NULL是输出”找不到子串“。
5. 第31行,将 p - str 改成 (p - str) / sizeof(char) + 1
题解:因为指针移动不是单纯的在当前地址值上加上1,而是加上一个当前的数据类型的长度,所以求位置是p - str还需要除以sizeof(char),由于题目要求中字符串第一个字符为1,所以最后还需要加上一个1。
- 改错题_101
- 改错题
- JAVA笔试改错题
- 程序改错题
- 面试 改错题-1
- 面试 改错题-2
- oj改错题
- C++继承改错题
- 改错题_102
- 改错题_103
- 改错题_105
- 改错题_106
- 改错题_107
- 改错题_108
- 改错题_109
- 改错题_110
- 改错题_111
- 改错题_112
- Linux上的free命令详解
- [LeetCode]LRU Cache有个问题,求大神解答【已解决】
- EBJ内部参考
- 浅谈reverse_iterator的base()函数
- 掌握-----字节流与字符流
- 改错题_101
- MySQL存储过程详解 mysql 存储过程
- MySQL 常用查询命令
- UVA - 11324 The Largest Clique 强连通缩点+记忆化dp
- Linux 守护进程的编程方法
- Android资源图片存放问题
- Appinions:2014年全球智能手表调查报告
- android 运用线程
- Linux 学习笔记 -- 第二部分 Linux 文件、目录与磁盘格式 -- 第7章 Linux 文件与目录管理