如何在C中检查字符串中的非字母字符
下面的代码(编译得很好)检查命令行输入中的非字母字符,但是我觉得应该有更好的方法来编写它。例如,您可以看到在检查字符串中每个字符的核心if语句中没有执行的代码。是否有办法检查其中一个字符是否不是字母字符并抛出错误,而不是在如何在C中检查字符串中的非字母字符,c,for-loop,if-statement,C,For Loop,If Statement,下面的代码(编译得很好)检查命令行输入中的非字母字符,但是我觉得应该有更好的方法来编写它。例如,您可以看到在检查字符串中每个字符的核心if语句中没有执行的代码。是否有办法检查其中一个字符是否不是字母字符并抛出错误,而不是在else函数中出错 int main(int argc, string argv[]){ // terminate program if more than one key if(argc != 2){ printf("error");
else
函数中出错
int main(int argc, string argv[]){
// terminate program if more than one key
if(argc != 2){
printf("error");
return 1;
// check to ensure key characters are alphabetical
} else {
for(int h = 0; h < strlen(argv[1]); h++){
if(isalpha(argv[1][h])){
} else {
printf("error");
return 1;
}
}
}
}
intmain(intargc,字符串argv[]){
//如果有多个键,则终止程序
如果(argc!=2){
printf(“错误”);
返回1;
//检查以确保关键字符按字母顺序排列
}否则{
对于(inth=0;h
是的,您可以反转if条件,这是这些情况下的一般解决方案
int main(int argc, string argv[]){
// terminate program if more than one key
if(argc != 2){
printf("error");
return 1;
} else {
// check to ensure key characters are alphabetical
for(int h = 0; h < strlen(argv[1]); h++){
if(!isalpha(argv[1][h])){
printf("error");
return 1;
}
}
}
}
intmain(intargc,字符串argv[]){
//如果有多个键,则终止程序
如果(argc!=2){
printf(“错误”);
返回1;
}否则{
//检查以确保关键字符按字母顺序排列
对于(inth=0;h
是的,您可以反转if条件,这是这些情况下的一般解决方案
int main(int argc, string argv[]){
// terminate program if more than one key
if(argc != 2){
printf("error");
return 1;
} else {
// check to ensure key characters are alphabetical
for(int h = 0; h < strlen(argv[1]); h++){
if(!isalpha(argv[1][h])){
printf("error");
return 1;
}
}
}
}
intmain(intargc,字符串argv[]){
//如果有多个键,则终止程序
如果(argc!=2){
printf(“错误”);
返回1;
}否则{
//检查以确保关键字符按字母顺序排列
对于(inth=0;h
字符串通常很短,但为循环条件调用strlen()ina是一个坏习惯。它是O(N平方),因为每次迭代都会扫描整个字符串
像这样编写函数
int allalpha(const char *str)
{
size_t i;
for(i=0;str[i];i++)
if(!isalpha(str[i]))
return 0;
return 1;
}
那么大体上
if(!allalpha(argv[1]))
{
/* non all-alpha error handling code here */
}
字符串通常很短,但为循环条件调用strlen()是一个坏习惯。它是O(N平方),因为每次迭代都会扫描整个字符串 像这样编写函数
int allalpha(const char *str)
{
size_t i;
for(i=0;str[i];i++)
if(!isalpha(str[i]))
return 0;
return 1;
}
那么大体上
if(!allalpha(argv[1]))
{
/* non all-alpha error handling code here */
}
您熟悉
吗代码>运算符?如果(!isalpha(argv[1][h])
,或者我遗漏了什么,为什么不?顺便说一句,在字符串argv[]
中的字符串是什么?@KenY-N应该是字符*
?在这种情况下,我应该如何迭代char*
数组以检查每个数组是否按字母顺序排列for(inth=0;h
?'h熟悉吗代码>运算符?如果(!isalpha(argv[1][h])
,或者我遗漏了什么,为什么不?顺便说一句,在字符串argv[]
中的字符串是什么?@KenY-N应该是字符*
?在这种情况下,我应该如何迭代char*
数组以检查每个数组是否按字母顺序排列<代码>对于(inth=0;h
?'h
运算符是一个布尔一元运算符,它将接受任何布尔条件并反转其值。现在,在C语言中布尔实际上只是整数,所以在实践中,对于非零输入(true),它将产生0(false),对于零输入(false),它将产生1(true)
运算符是一个布尔一元运算符,它将接受任何布尔条件并反转其值。现在,在C语言中,布尔实际上只是整数,所以在实践中,对于非零输入(true),它将产生0(false),对于零输入(false),它将产生1(true)。