黑马程序员技术交流社区
标题: 关于下列代码执行 出得问题 [打印本页]
作者: songynnm 时间: 2015-8-15 10:51
标题: 关于下列代码执行 出得问题
//
// main.c
// 每个单词首字母大写并统计单词个数
#include <stdio.h>
#include <string.h>
/*!
小写字母变大写字母
* @param small 数组传过来的单词开头小写字母
*
* @return 大写字母
*/
char first_Word(char small){
char big;
int temp = 0;
big = small - 32;
return big;
}
/*!
计算有多少个单词,
以空格隔开的算一个单词
* @param len 数组长度
* @param str 数组名
*/
void count_Words(int len,char str[len]){
int num = 1;
for (int i = 0; i < len; i++) {
if (str == ' ') {
num++;
str[i+1] = first_Word(str[i+1]);
}
if (i == 0) {
str = first_Word(str);
}
}
printf("一共有%d个单词\n",num);
puts(str);
}
int main(int argc, const char * argv[]) {
char str[100];
gets(str);
str[0] = first_Word(str[0]);
int len = strlen(str);
count_Words(len, str);
return 0;
}
如果输入下面这四个会出现最后一行的结果,为什么?
sdf dsf dz z
一共有5个单词
3df Dsf Dz Z \340
作者: Eil.tea 时间: 2015-8-15 11:03
大哥,这么多警示,你先修改一下,重新发代码吧,首先你得明白,指针和字符怎么能比较呢?str == ' ', 第二,strlen(str)返回的是长整型 int len = strlen(str);,第三,字符串数组,怎么能赋值一个字符呢?str = first_Word(str);,你这个函数返回类型是char。
作者: songynnm 时间: 2015-8-15 11:09
本帖最后由 songynnm 于 2015-8-15 11:10 编辑
已解决,谢大神,首先,我哪有用到指针啊,明明是数组中的第i个元素和' '比较啊,。。。哦,sorry,我没将代码格式化,东西都不见了
- void count_Words(long len,char str[len]){
- int num = 1;
- for (int i = 0; i < len; i++) {
- if (str[i] == ' ') {
- num++;
- str[i+1] = first_Word(str[i+1]);
- }
- if (i == 0) {
- str[i] = first_Word(str[i]);
- }
- }
- printf("一共有%d个单词\n",num);
- puts(str);
- }
- int main(int argc, const char * argv[]) {
- char str[100];
- gets(str);
- long len = strlen(str);
- count_Words(len, str);
- return 0;
- }
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |