ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

通讯录系统报错(二)

通讯录系统报错(二) 一、结构体是“组合”各占各屋联合体是“共用”挤在一屋。二、结构体定义格式typedef sturct 结构名{}结构名后不加小括号。三、E0065错误在定义结构体后应加上“”四、初始化通讯录时不用进行判断直接置0五、定义通讯录变量未contact con;而传出初始化函数Initcontact(),为指针则用取地址符号。即Initcontact(con);六、scanf(%d\n, input);错误\n不能写里面会导致程序无法往下执行。七、if (strcmp(p-per[i].name, name)) 修改为if (strcmp(p-per[i].name, name) 0) { // 必须判断等于0 return i; }。八、若指针指向的元素内容为空NULL则表示分配内存失败返回-1.九、 exit(-1);exit(-1) 给操作系统发信号“程序出故障了我立刻自杀”记住exit是终结整个程序而return只是终结当前函数。十、struct Person* new_arr (struct Person*)realloc(ps-arr, new_capacity * sizeof(struct Person));十一、free(ps-arr); // 释放堆上的数组十二、这不是函数调用而是函数声明声明了一个名为Checkcapacity、返回类型为void、参数为p的函数。C语言编译器会将这行视为一个局部声明不会生成任何调用指令。因此执行Addcontact时程序会跳过这行直接执行后面的printf所以Checkcapacity函数从未被进入。不加返回类型直接调用Checkcapacity(),并且函数名要写正确。前面不加声明void.十二、书籍推挤《深入理解计算机系统》编程平台剑指offer。链表节点一、源文件函数大括号后不用写引号。二、 1. 创建新节点 struct PersonNode* newNode (struct PersonNode*)malloc(sizeof(struct PersonNode));且要判断是否创建失败。三、排序时候判断两个节点后无论大小前指针往后移动因此写道判断外面。四、冒泡排序。前指针每轮循环从头到尾。尾指针固定在最后由于每轮循环排好最后一个节点因此每轮后可以让尾指针往前移动一位。那么该如何移动呢借助前指针前指针每轮移动到倒数第二然后尾指针指向前指针位置即可。五、冒泡排序。内层循环条件pre-next!ret)外层循环使用一个swapped变量。交换则置为1否则为0。六、且do while(){}后加引号。七、switch内语句退出用beak;不用return。八、引发了异常: 读取访问权限冲突。 **ret** 是 nullptr。当循环第二次判断while (pre ! NULL)时pre已经为NULL循环结束但在循环体内最后一行ret ret-next;已经在第一次迭代时执行了此时ret为NULL所以ret-next触发了非法访问。需要将while内改为while(ret!NULL);九、C6054 是一个代码分析警告表示传递给需要零终止字符串的函数的字符串可能未正确零终止。这可能导致缓冲区溢出或程序崩溃因此需要确保字符串以\0结尾。十、fwrite用于将数据块写入文件fwrite((cur-data), sizeof(Person), 1, fp);ptr指向要写入数据的内存起始地址通常是你结构体变量的地址。size每个数据单元的大小字节数。count要写入的数据单元个数。stream文件指针fopen的返回值。这 4 个函数是 C 标准 I/O 库的“四大金刚”它们共同构成了文件操作的完整生命周期fopen打开文件获得操作权限。fwrite/fread读写文件内容传输数据。fclose关闭文件释放资源并确保数据落盘十一、文件的读写操作 笔记十二、int file_size 0;fread(file_size, sizeof(int), 1, fp);for (int i 0; i file_size; i) {struct PersonNode* newnode (struct PersonNode*)malloc(sizeof(struct PersonNode));fopen(newnode, sieozef(struct PersonNode), 1, fp);if(newnodeNULL){printf(加载时内存分配失败\n);break;}if(fread(newnode-data,sizeof(struct person),1,fp)!1){printf(内存分配失败“free(newnode);break; }newnode-next p-head;p-head newnode;}fclose(fp);printf(文件读取成功\n);
返回列表