![](/img/trans.png)
[英]C - How do I print out characters between double quotes in a string array?
[英]How to check for double characters in a string in C?
我正在尝试为 CS50 的问题集 2 实施程序。
我的程序必须接受单个命令行参数,并且键本身应该不区分大小写,因此键中的任何字符是大写还是小写都不会影响我的程序的行为。
如果密钥无效(如不包含 26 个字符、包含任何非字母字符或每个字母不只包含一次),您的程序应该打印一条错误消息,指出“密钥必须包含 26 个字符”。
对于有效值,我仍然收到错误消息,而不是“正确”。 请在下面查看我的代码。
我对编程很陌生。 任何帮助将不胜感激。 谢谢!
#include <cs50.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
bool valid_key(string s);
bool single_letter(string s);
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("Usage: ./substitution key\n");
return 1;
}
else if (! valid_key(argv[1]))
{
printf("Key must contain 26 characters.\n");
return 1;
}
printf("Correct\n");
string plaintext = get_string("plaintext: ");
}
bool single_letter(string s)
{
for (int i = 0, len = strlen(s); i < len; i++)
{
for (int j = i + 1; j < len; i++)
{
if (s[i] == s[j] || s[i] == ' ')
{
return false;
}
}
}
return true;
}
bool valid_key(string s)
{
for (int i = 0, len = strlen(s); i < len; i++)
{
if (!isalpha(s[i]) || len != 26 || ! single_letter(s))
{
return false;
}
}
return true;
}
问题在于你的 for 循环,当你应该上升到 len - 1 时,你会上升到 len。当你检查 isalpha(s[len]) 时,你正在检查 isalpha("\0") 这将总是返回假。
编辑:正如 Sai Sreenivas 指出的另一个错误是内部循环应该是 j++ 而不是 i++
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.