所以我在C:中定义了以下函数
#include <stdio.h>
void encrypt(int size, unsigned char *buffer){
buffer[i] = buffer[i] + 1;
printf("%c",buffer[i]);
}
int main(){
encrypt(5,"hello");
}
我希望它返回ifmmp
,但我得到了错误
"分段故障(核心转储)"。
如果我去掉了buffer[i] = buffer[i] + 1
和printf("%c",buffer[i]+1)
这行,那么我得到了所需的结果。但我想实际更改存储在该地址中的值。我该怎么做?
您的代码中存在许多问题:
i
未初始化"hello"
被转换为int
,因此避免以这种方式发送。请参阅下面的代码-
您已发送参数
size
,但尚未使用。 -
最后,使用循环递增数组
char *buffer
中的每个值 -
在
main()
末尾返回一个值,正如您提到的返回类型为int
所以,这是代码
#include <stdio.h>
void encrypt(int size, char *buffer){
int i;
for(i=0;i<size;i++)
buffer[i] =(buffer[i]+1);
printf("%s",buffer);
}
int main(){
char s[]="hello";// total 5 charcters + ' ' character
encrypt(5,s);
return 0;
}
所产生的输出是所期望的。