为什么我从scanf循环中遇到分段错误? [英] Why am I getting a segmentation fault from scanf loop?
本文介绍了为什么我从scanf循环中遇到分段错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
注释掉scanf循环后,分段错误错误消失.为什么该循环会给我带来细分错误?
The segmentation fault error disappears after commenting out the scanf loop. Why is that loop giving me a segmentation fault?
char** nameArray = malloc(numNames * sizeof(char *));
for(i =0; i< 10; i++) {
nameArray[i] = malloc(25 * sizeof(char));
}
for (i = 0; i< numNames; i++) {
scanf("%s", &nameArray[i]);
}
for (i =0; i<numNames; i++) {
free(nameArray[i]);
}
推荐答案
首先,您需要进行更改
for(i =0; i< 10; i++) {
到
for(i =0; i< numNames; i++) {
,因为您需要创建足够的条目.
as you need to create enough entries.
还需要更改此行
scanf("%s", &nameArray[i]);
到
scanf("%s", nameArray[i]);
因为nameArray[i]
是必需的字符指针.
as nameArray[i]
is a character pointer as required.
也最好使用
scanf("%24s", nameArray[i]);
,因为这将防止缓冲区溢出.检查scant的返回值也是一个好主意
as this would prevent buffer overrun. Also it would be a good idea to check the return value of scant
这篇关于为什么我从scanf循环中遇到分段错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文