【发布时间】:2018-02-05 16:54:22
【问题描述】:
调试断言失败! 程序: ...Laske aakkoset\Debug\Ohjelmontitehtävä 4.1 Laske aakkoset.exe 文件:minkernel\crts\ucrt\appcrt\convert\isctype.cpp
Line: 36 Expression: c >= -1 && c <= 255
我的代码:
#include <stdio.h>
#include <ctype.h>
int count_alpha(const char *str) {
int i = 0;
int j = 0;
while (*str) {
if (isalpha(str[j])) {
i++;
j++;
str++;
}
else {
i = i;
j++;
str++;
}
}
printf("%d", i);
return (0);
}
int main(void) {
char lol[] = "asdf";
count_alpha(lol);
}
【问题讨论】:
-
i = i;有趣的做法 -
C 还是 C++?选择(您的文件具有 .cpp 扩展名,但您的代码使用 C 实践。)
-
增加
j或str,不能同时增加。 -
documentation 告诉我
isalpha的行为是未定义的,除非它的输入可以用 unsigned 字符表示,断言条件也表明这是导致问题的原因.尝试static_cast<unsigned char>以确保安全? -
std::cout << std::count_if(lol, lol + 4, isalpha);-- 如果你真的在使用 C++,这基本上就是整个代码。
标签: c++ c visual-studio