指针和字符的分段错误

时间:2016-10-05 17:43:02

标签: c pointers segmentation-fault

我试图通过输入一些文件夹路径来创建提取文件名的程序。

结果很好,但问题是在结果的最后,还有一些我无法解决的分段错误。

这是我写的。

enter the path : /Users/gui/Desktop/extract/extract
.
..
main
main.c
Segmentation fault: 11

结果就像

RxBleClient rxBleClient;
RxBleScanResult rxBleScanResult;
private Subscription scanSubscription;

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   rxBleClient = RxBleClient.create(this);
   Subscription scanSubscription = rxBleClient.scanBleDevices().subscribe(
      rxBleScanResult.getBleDevice().getMacAddress());
}

很抱歉提出这样一个非常简单的问题,我努力想弄清楚,但我不能。

感谢您阅读此问题。 最良好的问候。

3 个答案:

答案 0 :(得分:0)

当您使用df.dropna() 格式说明符调用scanf时,它需要一个指向字符数组的指针。你传递的是一个角色的地址。因此,它将该变量的内存位置写入到它旁边的任何内容中。这会调用undefined behavior

您需要将字符数组传递给%s

scanf

答案 1 :(得分:0)

你不能这样做

DatabaseName=YouDBName

您为一个角色预留了空间。你需要

char folderpath;
printf("enter the path : \n");
scanf("%s",&folderpath);

答案 2 :(得分:0)

当你声明char foldrpath时,只分配了一个字节的内存,你只能存储一个字符。当您尝试存储多个字节时,会导致分段错误(在这种情况下,您的进程空间可以访问内存位置)。所以尝试使用像char folderpath [MAXFOLDERLENGTH]这样的数组,否则你可以通过调用malloc来获得连续的字节块 char foldrpath =(char )malloc(MAXFOLDERLENGTH),这个malloc在堆区域中分配内存,因为前一个声明将为您提供在堆栈区域中分配的内存。希望这有帮助