如何在没有分段错误的情况下增加C中的字符指针



所以我在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;
}

所产生的输出是所期望的。

相关内容

  • 没有找到相关文章

最新更新