我有一个处理字符串数组的程序.其中一个方法从所述数组中的指定位置移除一个字符串.代码如下:
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,为什么我会遇到分段错误?
我正在编写一个函数,它将读取文件并将文本逐个字符插入到数组中,然后返回指向该数组的指针.允许该文件的最大大小为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)