C 段错误字符指针

标签 c encryption segmentation-fault

我需要帮助弄清楚为什么我会在这里遇到段错误。我已经检查过了,我认为我在使用指针时做错了什么,但我能弄清楚是什么。

我的程序:

#include <stdlib.h>
#include <stdio.h>

void encrypt(char* c);

//characters are shifted by 175

int main(){

char* a;
*a = 'a';
/*SEGMENTATION FAULT HERE!*/

encrypt(a);
printf("test:%c/n",*a);

return 0;

};
void encrypt(char* c){
    char* result;
    int i=(int)(*c);
    i+=175;
    if(i>255)
    {
            i-=256;
    }
    *c=(char)i;

};

最佳答案

问题出在这里:

char *a;
*a = 'a'

由于变量“a”未初始化,*a = 'a' 分配给随机内存位置。

你可以这样做:

char a[1];
a[0] = 'a';
encrypt(&a[0]);

或者在您的案例中甚至只使用一个字符:

int main(){
  char a = 'a';

  encrypt(&a);
  printf("test:%c/n",a);

  return 0;
};

关于C 段错误字符指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9658239/

相关文章:

C 编程 : seg faults, printf 和相关问题

c++ - findcontours opencv中的段错误

c - fopen() 的问题

c - lua中的简单加密

c - 如何评估C中的token?

java - .Net 应用程序和 Java 应用程序之间的对称加密问题

java - RSA 中 1024 位 key 长度的实数

c - 错误: misuse of undefined type 'struct IntArray'

C中特定值的数字加减组合

c - ReadFile 函数返回 ERROR_INVALID_PARAMETER