如何修改char的指针内容,其值在ascii中表示为int?

时间:2017-03-28 08:05:28

标签: c string pointers

我试图在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++;
   }
}

1 个答案:

答案 0 :(得分:0)

此:

printf("string %d\n", string[i]);

打印i处的字符,这是一个小整数(char表示的意思),是一个使用%d的整数。如果要查看生成的字符,则需要按原样打印:

printf("string '%c'\n", string[i]);

这里我使用%c,格式为字符。我添加了单引号,使用户可以更清楚地打印单个字符,这些只是装饰性的。

请注意,您的算法是“危险的”,因为在char缩放int时很容易出现整数溢出。