2024 华为笔试题及答案 1
找 错 void test1() { char string[10]; char* str1=0123456789; strcpy(string, str1); } 答:表面上并且编译都不会错误
但假如 string 数组原意表示的是字符串的话,那这个赋值就没有达到意图
最好定义为 char string[11],这样最后一个元素可以存储字符串结尾符; void test2() { char string[10], str1[10]; for(int I=0; I 10;I++) { str1[I] =a; } strcpy(string, str1); } 答:strcpy 使用错误,strcpy 只有遇到字符串末尾的才会结束,而 str1 并没有结尾标志,导致 strcpy 函数越界访问,不妨让str1[9]=,这样就正常了
void test3(char* str1) { char string[10]; if(strlen(str1) =10) { strcpy(string, str1); } } 答 : 这 又 会 出 现 第 一 道 改 错 题 的 错 误 了
strlen(str1)算出来的值是不包含结尾符的,假如 str1 刚好为10 个 字 符 +1 结 尾 符 , string 就 得 不 到 结 尾 符 了
可 将strlen(str1) =10 改为 strlen(str1) 10
找 错 #define MAX_SRM 256 DSN get_SRM_no() { static int SRM_no; int I; for(I=0;I =MAX_SRM) return (NULL_SRM); else return SRM_no; } 答:我不知道这段代码的具体功能,但明显有两个错误 1,SRM_