- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不断收到以下错误:
clang -ggdb3 -O0 -std=c99 -Wall -Werror vigenere.c -lcs50 -lm -o vigenere
vigenere.c:29:14: error: unused variable 'key' [-Werror,-Wunused-variable]
string key = GetString();
^
1 error generated.
我的代码如下。我很困惑为什么我会收到错误。如果我将变量“key”从 do while 循环中取出,那么它就可以正常运行。仅在放入 do while 循环时才会出现错误。
#include <stdio.h>
#include <cs50.h>
#include <math.h>
#include <string.h>
//Note 97 thru 122 are lowercase letters and 65 thru 90 are uppercase letters
//They are separated by exactly 32. A is 65 and a is 97
int checkIfAlphaAndCase(char argument); //This is a prototype
int changeLetterToNumber(char argument, int upperOrLower); //This is a prototype
int main(int argc, string argv[]){
printf("\n");
if(argc < 2){ //If the user fails to enter something
//printf("%d\n", argc);
printf("You failed!!!! You must enter an argument to be encrypted after the program name \n");
return 1;
}else{
do{
printf("Please enter a key at least 7 letters long: "); //Let's start by getting a key from the user
string key = GetString();
} while(strlen(key) < 7);
//printf("this is the first char: %c", key[0]);
int keysLength = strlen(key);
int keyChangedToNumbersArray[keysLength];
int alphaAndCaseInt;
int letterToNumber;
for(int i = 0; i < keysLength; i++){ //By using <= I'll add a null character at the end of the array to know when it ends.
//This null character will turn into zero after going through the funtion
//changeLetterToNumber and storing the return value in letterToNumber
alphaAndCaseInt = checkIfAlphaAndCase(key[i]);
//printf("%i", alphaAndCaseInt); //return types are 1 is lower, 2 is upper, and 0 is not a letter
letterToNumber = changeLetterToNumber(key[i], alphaAndCaseInt);
//printf("This is the char turned into a number: %i", letterToNumber);
keyChangedToNumbersArray[i] = letterToNumber;
//printf("This is the letter to Number: %i \n", letterToNumber);
//printf("\n\n");
//printf("%i\n", keyChangedToNumbersArray[i]);
}//This loop changes each letter of the key into a number
printf("\n\n");
//printf("Your encrypted data is: ");
//printf("%i\n", argc);
//printf("%c\n", argv[1][0]);
for(int i = 1; i < argc; i++){ //If a user enters [program] then a name or a string we want to skip over the program name
//and go straight to the string(s) to encrypt them. argc counts the program name in
//its count so we start at 1 to ensure we don't encrypt the program name also. This loop will
//run depending on how many words or characters with spaces there are as each one adds 1 to
//the argc count
//i will start out as 1
printf("%i\n", strlen(argv[i]));
//printf("%i\n", i);
for(int n = 0; n < strlen(argv[i]); n++){
//printf("%c", argv[i][n]);
int argLetterInt = checkIfAlphaAndCase(argv[i][n]);//return types are 1 is lower, 2 is upper, and 0 is not a letter
//printf("%i", argLetterInt);
if(argLetterInt == 1){ //return types are 1 is lower, 2 is upper, and 0 is not a letter
//This if statement is checking to see if the first letter of the argument is a lowercase letter and a letter.
if(keyChangedToNumbersArray[n] > 0 && argv[i][n] + keyChangedToNumbersArray[n] > 122){
printf("%c\n", argv[i][n]);
}else if(keyChangedToNumbersArray[n] > 0 && argv[i][n] + keyChangedToNumbersArray[n] < 122){
printf("%c\n", keyChangedToNumbersArray[n] + argv[i][n]);
}
}
if(argLetterInt == 2){ //return types are 1 is lower, 2 is upper, and 0 is not a letter
//This if statement is checking to see if the first letter of the argument is a lowercase letter and a letter.
if(keyChangedToNumbersArray[n] > 0 && argv[i][n] + keyChangedToNumbersArray[n] > 90){
printf("%c\n", argv[i][n]);
}else if(keyChangedToNumbersArray[n] > 0 && argv[i][n] + keyChangedToNumbersArray[n] < 90){
printf("%c\n", keyChangedToNumbersArray[n] + argv[i][n]);
}
}
}//end for loop
//printf(" ");
//printf("%s ", argv[i]);
printf("\n");
return 0;
}//End Main Function
}
}
int checkIfAlphaAndCase(char argument){
if(argument >= 97 && argument <= 122){
return 1; //must be lowercase
}else if(argument >= 65 && argument <= 97){
return 2; //must be uppcase
}else{
return 0; //must not be a letter
}
}
int changeLetterToNumber(char argument, int upperOrLower){ //Change the char to a number a and A both = 0
int returnValue = 0;
if(upperOrLower == 1){
int lowerCaseLetters[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for(int i = 0; i < 26; i++){
if(argument == lowerCaseLetters[i]){
returnValue = i;
break;
}
}
}else if(upperOrLower == 2){
int upperCaseLetters[26] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
for(int i = 0; i < 26; i++){
if(argument == upperCaseLetters[i]){
returnValue = i;
break;
}
}
}
return returnValue;
}
最佳答案
那些古怪的编译器编写者和他们疯狂的毫无意义的错误......
哦。等等,也许它们有用:
do {
printf("Please enter a key at least 7 letters long: "); //Let's start by getting a key from the user
string key = GetString();
} while(strlen(key) < 7);
key
的范围仅限于其声明的 { }
对(即 do-while 循环)内,并且从未在其他任何地方使用。你知道什么 - 就像编译器所说的错误:未使用的变量'key'
试试这个:
string key;
do {
printf("Please enter a key at least 7 letters long: "); //Let's start by getting a key from the user
key = GetString();
} while(strlen(key) < 7);
现在 string
不仅仅适用于 do while,还可以在其他地方使用。 (注意:仍然没有 100% 清楚字符串是什么...)
PS - 这是 C 还是 C++ - C 没有 string
类型。如果是 C++ 那么为什么要使用 strlen()
?
关于密码程序 — 错误 : unused variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32752468/
Internal Server Error: /admin/account/customuser/add/ Traceback (most recent call last): File "C:\
有问题!虽然我发现几乎相似的线程但没有帮助:( 我编写了一个 php 脚本来从我的 MySQL 数据库中获取注册用户的数量。该脚本在我的本地主机上运行良好;它使用给定的用户名、密码和主机名,分别是“r
我正在做一项基于密码的作业,我将 key 和消息放在单独的数组中。我想创建第三个数组,其中包含围绕消息大小的 key ,如下所示: message keykeyk 我已经在这个问题上苦苦挣扎了一段时间
我的几个客户要求我实现图形密码检查器,例如 关于如何实现这种 UI 有什么想法吗? 最佳答案 试着看看这个:https://code.google.com/p/android-lockpattern/
我正在使用 MAMP,每次登录 phpMyAdmin 时,都会收到以下错误/警告消息: the configuration file now needs a secret passphrase (bl
我正在尝试通过将 Visual Studio 2013 连接到我的测试机来调试 WDF 驱动程序。它创建一个名为 WDKRemoteUser 的用户,并在进行测试时尝试自动登录。有人知道这个用户的密码
使用具有指定用户名和密码的 SVN 提交。我希望服务器抛出错误;所以我可以告诉我的用户他/她的密码错误。 相反,在使用错误密码提交后: svn commit "test_file.txt" --use
我正在尝试实现 friend 推荐。 它从节点“你”开始。而且,我想找到节点“安娜”。 换句话说,这是我的两个或更多 friend 共同认识的人。上面的示例节点是 Anna。 如果您的帮助,我将不胜感
我都尝试过 wget --user=myuser --password=mypassword myfile 和 wget --ftp-user=myuser --ftp-password=mypass
我的一位用户提示说,每当他尝试使用默认管理界面(Django 的管理员)添加新用户(auth.User)时,新用户名和密码都会自动填充他自己的。 问题是他在登录时要求 Firefox 记住他的用户名/
我们正在开发一款应用(当然)用于应用购买 (IAP)。我已完成指南中的所有操作以启用 iap,并且一切正常,直到我想要购买为止。 部分代码: MainViewController.m -(vo
我试图创建两个可选匹配项的并集(如下所示),但我得到的不是并集,而是两者的交集。我应该如何更改此查询以获得所需的联合? optional match (a:PA)-[r2:network*2]-(b:
我想将Ansible用作另一个Python软件的一部分。在该软件中,我有一个包含其用户名/密码的主机列表。 有没有一种方法可以将SSH连接的用户/密码传递给Ansible ad-hoc命令或以加密方式
嗨,我在使用xampp的Apache Web服务器上收到错误500。直到我使用.htaccess,.htpasswd文件,错误才出现。我搜索了,但找不到语法错误。我只有1张图片和要保护的索引文件。以下
我一直使用它来编辑用户帐户信息: $this->validate($request, [ 'password' => 'min:6', 'password_confirmation'
我需要使用InstallUtil来安装C# Windows服务。我需要设置服务登录凭据(用户名和密码)。这一切都需要默默地完成。 有没有办法做这样的事情: installutil.exe myserv
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
如果我有一个随机的、16 个字符长的字母数字盐(不同大小写),它是为每个用户生成和存储的,我是否还需要一个站点范围的盐? 换句话说,这样好吗? sha1($user_salt . $password)
我正在开发一个空白程序,该程序将允许用户创建一个帐户,以便他们可以存储其余额和提款/存款。用户输入用户名和密码后,如何存储这些信息以便用户可以登录并查看其余额?我不一定要尝试使其非常安全,我只是希望能
我正在尝试寻找一种通用方法来搜索没有链接到另一个节点或节点集的节点或节点集。例如,我能够找到特定类型(例如 :Style)的所有节点,这些节点以某种方式连接到一组特定的节点(例如 :MetadataR
我是一名优秀的程序员,十分优秀!