c - if 语句触发了不需要的断点
问题描述
我想扫描用户的输入,将其存储在 char 数组中并检查它是否为 alpha。但是会出现错误:
Program:
...\Projects\Testing\Testing\Debug\Testing.exe
File: minkernel\crts\ucrt\src\appcrt\convert\isctype.cpp
Line: 36
Expression: c >= -1 && c <= 255
(Press Retry to debug the application)
我单击“重试”,然后它转到错误所在的行。它说“Testing.exe 触发断点”。
我的代码:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <Windows.h>
#include <ctype.h>
int sleep_seconds = 1 * 1000;
int main(void) {
int while_bool = 1;
while (while_bool == 1) {
char kapital_str[100];
double kapital;
printf("\nBitte geben Sie das Kapital (Anfangskapital) in CHF an: ");
scanf("%s", &kapital_str);
Sleep(sleep_seconds);
if (isalpha(kapital_str)) { // <- "Testing.exe triggers breakpoint"
printf("\nFalsche Eingabe! Bitte beachten Sie, dass es sich um eine Zahl handeln muss");
}
else {
scanf("%lf", &kapital);
}
}
我正在使用 Visual Studio 19
解决方案
问题是它isalpha()
需要一个 char (char 也是一个 int)而不是一个 char 数组并且你有一个 missing }
,所以代码看起来像这样:
#include <stdio.h>
#include <string.h>
#include <Windows.h>
#define MAX_CHAR_LEN 100
int main(void) {
double kapital;
char kapital_str[MAX_CHAR_LEN];
int while_bool = 1;
while (while_bool) {
printf("\nBitte geben Sie das Kapital (Anfangskapital) in CHF an: ");
scanf_s("%s", &kapital_str, MAX_CHAR_LEN);
int f_not_alph = 0;
for(int i=0; i < strlen(kapital_str); i++){
if (isalpha(kapital_str[i])) {
f_not_alph = 1;
}
}
if (f_not_alph) {
printf("Falsche Eingabe! Bitte beachten Sie, dass es sich um eine Zahl handeln muss \n");
} else {
sscanf_s((const char*)&kapital_str, "%lf", &kapital);
printf("Correct -> %lf \n", kapital);
}
f_not_alph = 0;
}
}
我也更喜欢彗星在英语中,所以我可以更容易地理解代码在做什么。
推荐阅读
- python - 将文本文件字典上传到 python 字典不起作用
- office-ui-fabric-react - DetailsList 中的 IColumn:如何在挂载时设置列宽
- magento - PHP 7.2 上的 Magento 1.9 - phpseclib 无法打开流
- javascript - 如何从脚本中检索变量以放入另一个脚本 nodejs
- python - 使用 re.sub 替换时出现问题,包括垂直线
- python - 根据数据框中的另一个值除以数据框中的值
- javascript - Cypress、Vuex 访问模块存储状态
- php - laravel 护照身份验证:api 保持未经身份验证的返回
- android - 如何在 sqlite 数据库中添加 markdown 的图像文件夹?
- java - JsonProperty 在 Spring Boot 中被忽略