所以我想要做的就是将每个字符的XOR值与列表中的其他字符相结合。例如:c ^ e
,b ^ a
等。
#include <stdio.h>
int main()
{
int i, j;
const char* characters[6] = {'a', 'b', 'c', 'd', 'e', 'f'};
for (i = 0; i < sizeof(characters) - 1; i++){
for (j = i + 1; j < sizeof(characters); j++){
printf("%c\n", characters[i] ^ characters[j]);
}
}
return 0;
}
但是我似乎无法使用printf()
,因为它在引号中输出一个字符串,而在没有时输出错误。
答案 0 :(得分:0)
chars[i] ^ chars[j]
(不带引号)将评估为char
而不是字符串,因此请尝试
char chars[] = {'a', 'b', 'c', 'd', 'e', 'f'};
...
print("%c\n", chars[i] ^ chars[j]);
答案 1 :(得分:0)
你给printf()
一个字符串,即&#34; chars [i] ^ chars [j] \ n&#34;,这就是它输出字符串的原因!
printf()
(如BLUEPIXY所说)。将所有评论放在一起,你就会得到这个:
#include <stdio.h>
int main() {
int i, j;
char characters[6] = { 'a', 'b', 'c', 'd', 'e', 'f' };
for (i = 0; i < sizeof(characters) - 1; i++) {
for (j = i + 1; j < sizeof(characters); j++) {
printf("chars[%d] ^ chars[%d] is %d\n", i, j,
characters[i] ^ characters[j]);
}
}
return 0;
}
由于您需要所有组合,因此您可以查看this个答案,然后重试。 :)
这个link提供了一个更简单和相关的答案。