这是我的 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()
函数返回用户输入的字符串.
因为i = 0
,name[i-1]
正在访问未分配的内存,它将导致未定义的行为.改变循环计数器i = 1
而不是i = 0
.
如评论中所述,您需要检查i =0
循环外的条件.