如何解决检查数组是否为 alpha
我需要检查是否首先在命令行中输入了一个键(我已经完成并有效)。然后我需要检查输入的密钥是否不是按字母顺序排列的。
我设法做到了,如果输入了 aplha 密钥,它会显示警告,但是如果输入的密钥是例如 2THG。它仍然可以使用数字而不是显示警告。
#include <stdio.h>
#include <cs50.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
int main (int argc,string argv[])
{
if (argc != 2 )
{
printf ("Usage: ./caesar key\n");
return 1;
}
if (isalpha (*argv [1]))
{
printf ("usage: ./caesar key\n");
return 1;
}
解决方法
调用“isalpha (*argv [1])”只检查第一个字符。如果我们需要检查te字符串,需要将字符串的每个字符分别传递给isalpha。
示例代码:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main (int argc,char* argv[]) {
int i = 0;
if (argc != 2 ) {
printf ("Usage: ./caesar key -1\n");
return 1;
}
for (i = 0; i < strlen(argv[1]); i++) {
if (isalpha(argv[1][i])) {
printf ("usage: ./caesar key\n");
return 1;
}
}
return 0;
}
,
这个表达:
*argv [1]
只检查数组 argv[1]
的第一个字符。要测试所有字符,请使用以下等效表达式之一进行彻底循环:
argv[1][i]
或:
*(argv[1] + i)
此外,还有一个类似的函数用于测试数字字符值:int isdigit(int c)。下面以循环方式说明验证 argv[1]
的内容:
int len = strlen(argv[1]);
for(int i=0;i<len;i++)
{
if(!isdigit(argv[1][i]))//leave upon first non-numeric character
{
printf ("usage: ./caesar key\n");
return 1;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。