【发布时间】:2017-08-25 21:07:23
【问题描述】:
我正在尝试将密码扰码器从 Javascript 复制到 C。它的作用是获取字母的 ASCII 字符代码,将其放置,划分,然后从给定列表中抓取一个随机字符。
Javascript 版本:
function getScrambledPassword(pwd) {
var cipher = ['k', 's', 'z', 'h', 'x', 'b', 'p', 'j', 'v', 'c', 'g', 'f', 'q', 'n', 't', 'm'];
var result="";
if (pwd == null)
pwd = "";
pwd = encodeURIComponent(pwd);
//alert("encoded password: " + pwd);
for(var i=0;i<pwd.length;i++) {
var cc = pwd.charCodeAt(i);
result += cipher[Math.floor(cc/16)] + cipher[cc%16];
}
//alert("scrambled password: " + result);
return result;
}
正在运行的加扰器示例:https://jsfiddle.net/w5db66va/
到目前为止我做了什么:
#include <stdio.h>
#include <math.h>
#include <string.h>
static char *scramblePassword(char *pwd)
{
char *cipher[] = {
"k", "s", "z", "h",
"x", "b", "p", "j",
"v", "c", "g", "f",
"q", "n", "t", "m"
};
char *result = "";
for(int i=0; i < strlen(pwd); i++)
{
int cc = (int) pwd[i];
printf("%d", cc);
result + cipher[floor(cc/16)] + cipher[cc%16];
}
return *result;
}
int main(void)
{
char *test[] = {"test", "testtwo", "testthree"};
for (int i=0;i < sizeof(test); i++)
{
printf("Original: %s", test[i]);
printf("Scrambled: %s", scramblePassword(test[i]));
}
}
我遇到的问题是,当我运行c 文件(编译后)时,它根本不会输出任何内容。我做错了什么以至于无法按预期运行?
【问题讨论】:
-
char cipher[] = { 'k', 's', ..... }或char cipher[] = "ksz...";怎么样 -
最好是
sizeof(test) / sizeof(char*),这样你实际上得到了数组的长度,而不是它的字节大小。 -
@DavidC.Rankin 为什么
'超过"? -
在发布的代码中,在 for 循环中,以
result +开头的行什么也不做。应该是result[i] =。
标签: javascript c code-conversion scramble