小编fre*_*r05的帖子

传递NULL指针时C分段错误,尽管条件告诉函数如果传递NULL参数不运行?

我有一个处理字符串数组的程序.其中一个方法从所述数组中的指定位置移除一个字符串.代码如下:

void RemoveStringAt(char *array[], int pos)
{
    if((array[pos]!=NULL)&&(array!=NULL)&&(pos!=NULL))
    {
        free(array[pos]);
        array[pos]=NULL;
    }
}
Run Code Online (Sandbox Code Playgroud)

该项目的一个规范是传递NULL值时不应导致seg错误.这是我尝试时发生的事情:

 RemoveStringAt(NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

并输出:

Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

如果甚至执行方法核心部分的条件之一是传递的值都不是NULL,为什么我会遇到分段错误?

c string segmentation-fault

3
推荐指数
1
解决办法
1908
查看次数

如何在C中返回指向数组的指针?

我正在编写一个函数,它将读取文件并将文本逐个字符插入到数组中,然后返回指向该数组的指针.允许该文件的最大大小为2KB.

这就是我现在拥有的:

int main(){
    char data[2048];
    char* data4=layer4(data);
}

char* layer4(char array[]){
    FILE *fp;
    fp=fopen("sendfile.txt","r+");
    fscanf(fp, "%c", array);
    for(int i=0; i<2048; i++){
        printf("%c\n",array[i]);
    }
    return &array;
}
Run Code Online (Sandbox Code Playgroud)

c arrays pointers

-4
推荐指数
1
解决办法
121
查看次数

标签 统计

c ×2

arrays ×1

pointers ×1

segmentation-fault ×1

string ×1