黑马程序员技术交流社区

标题: 问题到底出在哪里了呢?? [打印本页]

作者: 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