当前位置:  开发笔记 > 编程语言 > 正文

返回名称缩写的C程序(CS50)

如何解决《返回名称缩写的C程序(CS50)》经验,为你挑选了1个好方法。

这是我的 main

char* name = GetString();
if(name != NULL)
{
    for(int i = 0, j = strlen(name); i < j; i++)
    {
        if(!isalpha(name[i-1]) && isalpha(name[i]))
            printf("%c", toupper(name[i]));
    }
    printf("\n");
}

该计划效果很好; 它通过了所有(check50)测试.

但我担心一个可能的错误,那就是i = 0,存储的值是否可能name[-1]是一个字母字符?

注意:该GetString()函数返回用户输入的字符串.



1> haccks..:

因为i = 0,name[i-1]正在访问未分配的内存,它将导致未定义的行为.改变循环计数器i = 1而不是i = 0.

如评论中所述,您需要检查i =0循环外的条件.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有