黑马程序员技术交流社区
标题: 问题到底出在哪里了呢?? [打印本页]
作者: fudanxiaoan 时间: 2015-7-31 17:42
标题: 问题到底出在哪里了呢??
/******** *** *************************************
7、输入一英文句子,将其中所有单词首字符转换成大写后输出。(C语言
**************************************************/
#include <ctype.h>
#include <string.h>
#include <stdio.h>
int main()
{
char m[100] = {0};
printf("请输入一英文句子:\n");
fgets(m,100,stdin);
for (int i = 0; i < 100; i++)
{
//若第一个数组元素为英文小写则改为大写,若为其他则不变
if((i = 0) && islower(m[0]))
m[0] = m[0] - 32;
//第一个元素以后的元素若满足:是英文小写且前面非英文,则改为大写
else if((!(isalpha(m[i-1]))) && islower(m))
m= m -32 ;
}
fputs(m,stdout);
return 0;
}
作者: alanwangke213 时间: 2015-7-31 18:16
你这不能用else if后面的语句有点问题,不能直接这么写的。因为当m=0时候,也会判断m[i-1]是否,则会出现段错误
作者: alanwangke213 时间: 2015-7-31 18:21
网页有问题啊。。。恢复的字怎么少 了几个。。。。
当i=0的时候回判断if语句,然后判断else if语句了。i-1就是-1了。数组越界了。
作者: 糖糖本尊 时间: 2015-7-31 21:27
m[0]改为m[i]
作者: fudanxiaoan 时间: 2015-7-31 21:40
谢谢,已经解决了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |