使用 toupper() 时遇到分段错误
Facing segmentation fault while using toupper()
以下方法会导致错误:
BOOL should_begin(void) {
char yn;
do {
printf("Continue? [Y/N] ");
yn = getchar();
printf("\n");
yn = toupper(yn);
if (yn == 'N') {
return FALSE;
}
} while (yn != 'Y');
return TRUE;
}
代码正常执行,直到达到toupper()
,此时出现段错误。我见过这样的问题,其中 toupper()
是在字符串的一部分上调用的,但只有当有人试图修改文字时才会这样。
那么是什么原因呢? char yn
不应该是只读的,对吧?这只是一个 char
,一个字节的数据,我不是在读取整个字符串吗?
编辑:
这是我的 main()
函数。
int main(int argc, char* argv[]) {
/* just some printf()s with instructions */
if (!should_begin()) {
return 0;
}
/* then continue with rest of the program */
return 0;
}
以下方法会导致错误:
BOOL should_begin(void) {
char yn;
do {
printf("Continue? [Y/N] ");
yn = getchar();
printf("\n");
yn = toupper(yn);
if (yn == 'N') {
return FALSE;
}
} while (yn != 'Y');
return TRUE;
}
代码正常执行,直到达到toupper()
,此时出现段错误。我见过这样的问题,其中 toupper()
是在字符串的一部分上调用的,但只有当有人试图修改文字时才会这样。
那么是什么原因呢? char yn
不应该是只读的,对吧?这只是一个 char
,一个字节的数据,我不是在读取整个字符串吗?
编辑:
这是我的 main()
函数。
int main(int argc, char* argv[]) {
/* just some printf()s with instructions */
if (!should_begin()) {
return 0;
}
/* then continue with rest of the program */
return 0;
}