我试图通过输入一些文件夹路径来创建提取文件名的程序。
结果很好,但问题是在结果的最后,还有一些我无法解决的分段错误。
这是我写的。
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());
}
很抱歉提出这样一个非常简单的问题,我努力想弄清楚,但我不能。
感谢您阅读此问题。 最良好的问候。
答案 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在堆区域中分配内存,因为前一个声明将为您提供在堆栈区域中分配的内存。希望这有帮助