我的程序远未完成,因为我是新手,并希望在添加组件之前测试所有内容。所以现在我想做一个加密程序,让用户在命令行输入一个键,并使用键来翻译他们在启动程序后输入的文本。我不是要完全比较变量的部分。我现在要做的就是确保我正确设置了循环。我确实写过伪代码,但程序远未完成,所以我意识到包含这个是无关紧要的。基本上,我现在遇到的问题是我有两个字符串,文本和键。我想比较每个字符串中的字符,并且如果文本字符不是字母,则跳过比较。在这种情况下,程序应该打印文本char,然后在char为alpha时继续比较。这很好。当char是alpha时,程序使用两个for循环来比较text char和key char。现在我只想确保它在继续程序之前工作,所以我让循环打印出数组中的字符;但事实并非如此。它就像一个循环应该工作,而不是正确地输出数据。如果我使用文本迭代将print语句移动到最外层的循环,程序只会在key和所有文本字符中打印最终的char,但如果它在最里面的循环中,它会在文本中打出第一个char,其中chars为key并经历这一直到文本字符结束。我知道这是一个循环问题,但我现在有点不知所措,因为这件事情有点复杂。我最终会把函数放到程序中,(因为我现在有一个非常简单/弱的函数)但是我真的很新,并希望在我做一些更复杂的事情之前确保有效。
对不起,这太久了!我继续删除了库扩展,只知道有一个string.h来处理字符串和GetString函数。
string Encrypt(void);
int main(int argc, string argv[])
{
//Exits with improper arguement count
if (argc!=2)
{
printf("You must enter one keyword when running the program.\n");
return 1;
}
//Sets k to key entered for command argument 1
string key = argv[1];
//Checks key to make sure a-z is entered. Exits if not.
for (int i=0, word=strlen(key); i<word; i++)
{
if (isalpha(key[i]))
{
}
else
{
printf("Only letters are allowed for the key.\n");
return 1;
}
}
string text = Encrypt();
//begin loop for string compare
if (text !=NULL)
{
for (int i=0, l=strlen(text); i<l; i++)
{
if (isalpha(text[i]))
{
char c=text[i];
char t='b';
for(int j=0, m=strlen(key); j<m; j++)
{
t=key[j];
printf("%c", t);
}
printf("%c", c);
}
else
{
printf("%c", text[i]);
}
}
}
return 0;
}
string Encrypt(void)
{
printf("Enter your text.");
string text = GetString();
return text;
}