【发布时间】:2019-10-14 11:49:44
【问题描述】:
我无法弄清楚如何检查关键字 (argv[1]) 中的每个字符。我知道我可能遗漏了一些非常明显的东西。 :(
我尝试将字符串保存到一个数组,声明一个新的 int,但还是同样的问题。
//check to make sure 2nd argument is fully alphabetic
string keyword = argv[1];
for(int i = 0, n = strlen(keyword); i < n; i++)
{
if(isalpha(keyword[i]))
{
printf("Success! \n");
return 0;
}
else
{
printf("Invalid key, must be fully alphabetic. \n");
return 1;
}
}
预期的输出应该是“无效的键,必须是全字母。”对于任何不完全按字母顺序排列的东西。相反,它只适用于开头字符,而不适用于整个关键字。
【问题讨论】:
-
那是因为您在第一次测试之后从循环内部
return。通过或失败,仅此而已。 -
strlen()必须迭代字符串才能找到结尾,但是无论如何你都要迭代字符串,直接使用字符串终止符来终止循环更简单、更有效:@987654325 @ -
你可能对cs50 stack exchange site感兴趣。