Syc*_*ins 1 c arrays char isalpha
我正在尝试编写一个简单的代码来检查字符串中是否只有数字。到目前为止它还没有工作,任何帮助将不胜感激。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char numbers[10];
int i, correctNum = 0;
scanf("%s", numbers);
for(i = 0 ; i <= numbers ; ++i)
{
if(isalpha(numbers[i]))
{
correctNum = 1;
break;
}
}
if(correctNum == 1)
{
printf("That number has a char in it. FIX IT.\n");
}
else
{
printf("All numbers. Good.\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
添加到其他答案中,您还可以用来strtol确定字符串是否包含所有数字。它基本上将字符串转换为整数,并忽略任何非整数。您可以阅读手册页以获取有关此函数的更多信息,以及可以使用它进行的广泛错误检查。
另外,您应该使用:
scanf("%9s", numbers);
Run Code Online (Sandbox Code Playgroud)
代替:
scanf("%s", numbers);
Run Code Online (Sandbox Code Playgroud)
以避免缓冲区溢出。
这是一些示例代码:
#include <stdio.h>
#include <stdlib.h>
#define MAXNUM 10
#define BASE 10
int main(void) {
char numbers[MAXNUM];
char *endptr;
int number;
printf("Enter string: ");
scanf("%9s", numbers);
number = strtol(numbers, &endptr, BASE);
if (*endptr != '\0' || endptr == numbers) {
printf("'%s' contains non-numbers\n", numbers);
} else {
printf("'%s' gives %d, which has all numbers\n", numbers, number);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输入示例 1:
Enter string: 1234
Run Code Online (Sandbox Code Playgroud)
输出:
'1234' gives 1234, which has all numbers
Run Code Online (Sandbox Code Playgroud)
输入示例 2:
Enter string: 1234hello
Run Code Online (Sandbox Code Playgroud)
输出:
'1234hello' contains non-numbers
Run Code Online (Sandbox Code Playgroud)