Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么只打印这些字符串的最后几个字母?_C++_Arrays_String_Arduino - Fatal编程技术网

C++ 为什么只打印这些字符串的最后几个字母?

C++ 为什么只打印这些字符串的最后几个字母?,c++,arrays,string,arduino,C++,Arrays,String,Arduino,我很好奇,看看Arduino Leonardo的键盘和鼠标库是否可以用作windows用户密码暴力黑客。利用我有限的业余爱好编码和arduino技能,我开始为此编写程序 一开始的问题似乎是串行输出在输出普通密码时,却在输出随机字母/数字。我花了一分钟才意识到这些是常用密码。嗯,他们每个人的最后一个字母 守则: // tests most common paswords, if one of these works your idiot alert should be ringing char m

我很好奇,看看Arduino Leonardo的键盘和鼠标库是否可以用作windows用户密码暴力黑客。利用我有限的业余爱好编码和arduino技能,我开始为此编写程序

一开始的问题似乎是串行输出在输出普通密码时,却在输出随机字母/数字。我花了一分钟才意识到这些是常用密码。嗯,他们每个人的最后一个字母

守则:

// tests most common paswords, if one of these works your idiot alert should be ringing
char myStrings[26]={ 'password', '123456', '12345678',
'1234', 'qwerty','12345','password', 'dragon', 'pussy',
'baseball', 'football','monkey', 'letmein', '696969',
'abc123', 'mustang','michael', 'shadow', 'master',
'jennifer', 'harley','1234567', 'jordan',
'2000', '111111',
'COMMON PASSWORDS EXHAUSTED: ATTEMPTING BRUTE FORCE'};


//the letters... yep
char myLetters[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'};


//establishes serial connection
void setup(){
Serial.begin(9600);
}


void loop(){
for (int i = 0; i < 27; i++){
   Serial.println(myStrings[i]);
   }

   Serial.println("Common Finish"); // the common passwords have been attempted

   for (int o = 0; o < 26; o++){
   Serial.println(myLetters[o]);
   delay(500);
   }
   Serial.println("Letter Finish"); // the letters have been finished

   Serial.println("rinse wash repeat."); //the loop n' stuff

}
//测试最常见的密码,如果其中一个有效,您的白痴警报应该会响起
char myStrings[26]={'password','123456','12345678',
‘1234’、‘qwerty’、‘12345’、‘密码’、‘龙’、‘猫’,
‘棒球’、‘足球’、‘猴子’、‘letmein’、‘696969’,
‘abc123’、‘野马’、‘迈克尔’、‘影子’、‘主人’,
‘詹妮弗’、‘哈利’、‘1234567’、‘乔丹’,
'2000', '111111',
'通用密码耗尽:尝试暴力'};
//这些信。。。是的
char myLetters[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'};
//建立串行连接
无效设置(){
Serial.begin(9600);
}
void循环(){
对于(int i=0;i<27;i++){
Serial.println(myStrings[i]);
}
Serial.println(“公共完成”);//已尝试使用公共密码
对于(into=0;o<26;o++){
Serial.println(myLetters[o]);
延迟(500);
}
Serial.println(“字母完成”);//字母已完成
Serial.println(“冲洗-清洗-重复”);//循环n'stuff
}
arduino串行监视器的图像:


如果您能了解我是如何滥用数组或字符串的,我将不胜感激。谢谢。

“…”
用于单个字符。字符串使用
“…”

随后,您的变量声明是错误的,因为它是一个字符数组


但是。

A
char
只代表一个字符,因此
myStrings
实际上只是一个由26个字母/数字组成的数组。每个字符串中的所有其他内容都将被忽略。同样重要的是要注意,在使用单引号时,一次只能有一个字符;e、 g.
'a'
可以,但是
'abc'
不能正常工作

要使用字符串文字(在草图运行时不必更改的文本),可以使用
const char*
数据类型,而不仅仅是
char
,并将文本括在双引号中,
“像这样”

您可以重新编写字符串数组,如下所示:

const char *myStrings[26] = {"password", "123456", "12345678",
    "1234", "qwerty","12345","password", "dragon", "pussy",
    "baseball", "football","monkey", "letmein", "696969",
    "abc123", "mustang","michael", "shadow", "master",
    "jennifer", "harley","1234567", "jordan",
    "2000", "111111",
    "COMMON PASSWORDS EXHAUSTED: ATTEMPTING BRUTE FORCE"};
该数组中的每个字符串本身就是一个字符数组。您可以在Arduino网站上的中了解更多信息

用法
如果您只想将这些字符串输出到串行,那么您仍然可以以相同的方式访问它。例如,此循环仍应工作:

for (int i = 0; i < 27; i++){
    Serial.println(myStrings[i]);
}
for(int i=0;i<27;i++){
Serial.println(myStrings[i]);
}
但是,如果要比较该类型的两个字符串,则不能使用常用的相等运算符(
==
)。您需要使用
strcmp()

字符串对象

另一种方法是使用
String
对象来存储字符串。它更易于使用,并且允许您在运行时修改字符串数据。但是,它会占用更多内存(这在Arduino上非常有限)。如果你想探索这条途径,你可以在Arduino网站上查看。

FYI,实际上现在有一个SE网站来回答这些问题。这一点与问题没有太大关系,但你需要将(int i=0;i<27;i++){更改为(int i=0;i<26;i++){的
for(int i=0;i<26;i++){/code>。