面试点:字符串strcpy函数(C语言面试题分析之二)

简介: 面试点:字符串strcpy函数 C语言面试题分析之二 一.基本知识点 Strcpy(字符数组1,字符串2) 1.strcpy该函数是通过第二个参数的字符串的结束符来判断是否拷贝结束的; 2.

面试点:字符串strcpy函数

C语言面试题分析之二

一.基本知识点

Strcpy(字符数组1,字符串2)

1.strcpy该函数是通过第二个参数的字符串的结束符来判断是否拷贝结束的

2.strlen函数得到字符串的长度,是不包含字符串结束符的

3.使用strcpy函数的时候,一定要注意第一个字符数组的大小至少不小于字符串2的大小,否则便是访问越界

4.字符串2后面的`\0`也一同被复制到字符数组1中;

二.程序错误分析

程序片段一:

void test1()
  
{
  
       char string[10];
  
       char* str1="0123456789";
  
       strcpy(string, str1);
  
}
  这里string数组越界,因为str1字符的长度是10,还有一个结束符‘/0’。所以总共有11个字符长度。而string数组大小为10,所以就越界了。

  PS:使用strcpy函数的时候一定要注意前面目的数组的大小一定要大于后面字符串的大小,否则便是访问越界。

程序片段二:

void test2()
  
{
         char string[10], str1[10];

int i;
  
for(i=0; i<10;i++)
  
{
  
str1[i] ='a';
  
}
  
strcpy(string, str1);
}
  这里最大的问题还是str1没有结束符,因为strcpy的第二个参数应该是一个字符串常量。该函数就是通过判断第二个参数的结束符来判断是否拷贝结束的。所以在for循环后面应加上
str1p[9] = '/0';
  PS:字符数组和字符串的最明显的区别就是字符串会被默认的加上结束符‘/0’

程序片段三

  void test3(char* str1)
  
{
  
       char string[10];
  
       if(strlen(str1)<=10)
  
       {
  
              strcpy(string, str1);
  
       }
  
}
  这里的问题仍是越界问题。strlen函数得到字符串的长度,是除结束符之外的。如果str字符串的长度正好等于10的话,就很明显越界了。

相关文章
|
29天前
|
算法 Java 调度
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
《面试专题-----经典高频面试题收集四》解锁 Java 面试的关键:深度解析并发编程进阶篇高频经典面试题(第四篇)
36 0
|
8天前
|
存储 缓存 C语言
【C语言】字符函数,字符串函数,内存函数
C语言中的字符串函数和内存函数
14 0
【C语言】字符函数,字符串函数,内存函数
|
14天前
|
C语言
C语言5 字符输出函数和格式输出函数
C语言5 字符输出函数和格式输出函数
20 1
|
16天前
|
算法 编译器 C语言
深入浅出C语言—【函数】下
深入浅出C语言—【函数】下
|
17天前
|
监控 Java 开发者
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
Java面试题:如何使用JVM工具(如jconsole, jstack, jmap)来分析内存使用情况?
38 2
|
24天前
|
算法 Java API
Android性能优化面试题经典之ANR的分析和优化
Android ANR发生于应用无法在限定时间内响应用户输入或完成操作。主要条件包括:输入超时(5秒)、广播超时(前台10秒/后台60秒)、服务超时及ContentProvider超时。常见原因有网络、数据库、文件操作、计算任务、UI渲染、锁等待、ContentProvider和BroadcastReceiver的不当使用。分析ANR可借助logcat和traces.txt。主线程执行生命周期回调、Service、BroadcastReceiver等,避免主线程耗时操作
25 3
|
27天前
|
Java C语言 C++
定义C语言的int main()函数
定义C语言的int main()函数
|
29天前
|
存储 移动开发 C语言
技术心得记录:嵌入式开发中常用到的C语言库函数
技术心得记录:嵌入式开发中常用到的C语言库函数
21 1
|
14天前
|
存储 C语言
C语言6 字符串输入和格式输入函数
C语言6 字符串输入和格式输入函数
15 0
|
17天前
|
设计模式 安全 NoSQL
Java面试题:结合单例模式与Java内存管理,设计一个线程安全的单例类?分析Java多线程工具类ExecutorService与Java并发工具包中的工具类,设计一个Java并发框架的分布式锁实现
Java面试题:结合单例模式与Java内存管理,设计一个线程安全的单例类?分析Java多线程工具类ExecutorService与Java并发工具包中的工具类,设计一个Java并发框架的分布式锁实现
20 0

热门文章

最新文章