我试图在c中定义一个简单的函数来加密文本,我非常挣扎。这是问题,看看功能:
string[i] = (string[i] * hash)/4;
为什么括号内的string[i]
的值被视为(int)ascii
,但在&{34; ="之前string[i]
中的值被修改是内存指针?
考虑函数crypt (char *string, int hash)
中的字符串值是指结构account.passwd
。
我也试过这个:
*(string+i) = (string[i] * hash)/4;
但结果相同。 如何修改char指针的内容,其值在ascii中表示为int?
功能:
void crypt (char string[50], int hash){
int i = 0;
while (string[i] != 0){
string[i] = (string[i] * hash)/4;
printf ("string %d\n", string[i]);
i++;
}
}
答案 0 :(得分:0)
此:
printf("string %d\n", string[i]);
打印i
处的字符,这是一个小整数(char
表示的意思),是一个使用%d
的整数。如果要查看生成的字符,则需要按原样打印:
printf("string '%c'\n", string[i]);
这里我使用%c
,格式为字符。我添加了单引号,使用户可以更清楚地打印单个字符,这些只是装饰性的。
请注意,您的算法是“危险的”,因为在char
缩放int
时很容易出现整数溢出。