本文介绍了C 分段错误字符指针的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要帮助找出为什么我在这里遇到分段错误.我已经检查过了,我认为我的指针做错了,但我可以弄清楚是什么.

I need help figuring out why I am getting a segmentation fault here. I have gone over it and I think I am doing something wrong with the pointers, but I can figure out what.

我的程序:

#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' 分配给随机内存位置.

Since the variable "a" is not initialized, *a = 'a' is assigning to a random memory location.

你可以这样做:

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

或者在你的情况下甚至只使用一个字符:

Or even just use a single character in your case:

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

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

  return 0;
};

这篇关于C 分段错误字符指针的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-05 07:06