输入一串字符串,然后判断其是否为数字字符。当数字为负数时,输出:非法!c语言
时间: 2024-09-19 19:04:20 浏览: 68
在C语言中,可以使用`isdigit()`函数来判断一个字符是否是数字字符。不过,这个函数只适用于ASCII码表中的0-9十个数字字符,并且无法直接处理负数情况。如果你需要判断整个字符串是否全为数字,包括负号,你需要遍历字符串并做额外的处理。
下面是一个简单的示例,假设输入的是一个整数字符串:
```c
#include <stdio.h>
#include <ctype.h>
int is_number(const char *str) {
int i = 0;
while (str[i] != '\0') {
if (!isdigit(str[i]) && str[i] != '-') {
return 0; // 非法字符
}
i++;
}
// 检查是否有负号但没有后续数字
if (i > 0 && str[0] == '-' && str[1] == '\0') {
return 0; // 过于简短,只有负号
}
return 1; // 所有字符都是数字或合法的负号
}
int main() {
char input[50];
printf("请输入一个数字字符串:");
fgets(input, sizeof(input), stdin); // 注意去掉末尾的换行符
input[strcspn(input, "\n")] = '\0'; // 移除fgets添加的换行符
if (is_number(input)) {
printf("这是一个数字。\n");
} else {
printf("非法!\n");
}
return 0;
}
```
在这个程序中,`is_number` 函数会检查字符串中的每个字符是否是数字或负号,并在遇到非数字字符或只有一个负号时返回0表示非法。注意,这里仅针对整数处理,对于浮点数需要更复杂的解析规则。
阅读全文