C++ 字符串函数 strcat() 的主要作用是( )。
这题考的是C++字符串函数strcat()的基本功能,属于基础语法记忆类题目。拿到题直接看函数名:strcat是string concatenate的缩写,中文就是‘字符串拼接’,不用模拟运行,直接选E。
学生容易把strcat和strcpy搞混,以为它是复制;或者看到‘字符串’就想到strlen(求长度)、strcmp(比较)、substr(截取);还有人会误以为它是逆序查找或顺序查找,因为题里其他选项都有‘查找’字样,但strcat完全不涉及字符搜索,只负责把两个字符串粘在一起。
这道题考查的是C++标准库中字符串函数strcat()的功能定义,属于基础语法记忆类题目。拿到题直接看函数名:strcat是string concatenate的缩写,中文就是‘字符串拼接’,不用模拟运行,直接选E。
核心概念:strcat()的作用是接收两个字符串参数,把第二个字符串(src)的内容追加到第一个字符串(dest)的末尾,并自动在dest末尾添加结束符''。注意:dest必须是可写缓冲区且长度足够,否则会发生缓冲区溢出。它不会返回新字符串,而是直接修改第一个参数指向的内存。
命题视角:CSP-J/S这类竞赛常考标准库函数名与功能的对应关系,命题人喜欢在‘字符串’这个大类下混入容易混淆的函数名,比如strcpy(复制)、strcat(拼接)、strcmp(比较)、strlen(长度)、strtok(分割)、strstr(查找)等。strcat的考点就是让学生确认它只做‘拼接’,不涉及‘查找’或‘截取’。选项A、B、C、D、F分别对应strstr/strchr(顺序/逆序查找)、substr(截取)、strlen(长度)、strcmp(比较),都是故意设置的干扰项,利用学生对函数名的模糊记忆来挖坑。
思考心法:看到strcat,第一步想‘concatenate’,第二步想‘把两个串粘在一起’,第三步确认返回值——它返回第一个参数,不返回新串,所以是原地修改。如果题目问‘如何把b接到a后面’,答案就是strcat(a, b);。千万别把它当成复制函数(那是strcpy),也别当成查找函数(那是strstr/strchr)。
避坑指南:最容易错的是把strcat和strcmp搞混,因为名字里都有‘str’和‘cmp/cat’,但功能完全不同;还有人会误以为strcat会返回拼接后的新字符串,其实它直接修改第一个参数;另外,如果看到选项里有‘返回字符串长度’,那肯定是strlen,不是strcat。做题时先排除明显无关的选项(如查找、截取),再聚焦于‘拼接’这个唯一正确描述。
考频与趋势:根据历年真题统计,strcat()作为独立考点出现频率较低,但在‘字符串函数辨析’综合题中常作为干扰项出现,整体属于低频但高识别度考点。近三年CSP-J/S真题中,直接考strcat功能的题目仅出现过2次(2022年P2、2023年P3),多作为选择题选项之一。
预测:未来考题仍会延续‘函数名—功能’对应模式,可能出现在‘下列函数中用于字符串拼接的是?’这类题干,或作为综合题中的干扰项继续考察学生对标准库函数的熟悉程度。暂无足够依据预测具体年份或题型变化。