博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于字符数组要注意的一个小问题
阅读量:7063 次
发布时间:2019-06-28

本文共 1167 字,大约阅读时间需要 3 分钟。

/*

** 时间 :2016年4月6日22:35:07
** 地点 :宿舍。
** 目的 :测试一下字符数组的一些问题。
** 功能 :打印不同长度的字符串的相关信息。
*/

#include <stdio.h>

#include <string.h>

int main(void)

{
  /* hello world!一共有12个字符(带空格),加上字符串后面的'\0'一共是13个字符。
   * 所以为str字符串分配13个字符时,用printf("str1 = %s\n", str);来打印字符串时是
   * 正常显示的。但如果为str1字符数组分配12个字符时,就不正常。
   */

  /* 定义一个str1字符串,也是一个str数组。 应该要为'\0'留一个字节*/

  char str1[13] = "hello world!"; 

  /* 定义一个字符数组str2,不需要为'0'留一个字节,但不能用%s来打印str2,不然会出问题,要用%c逐个打印。 */

  char str2[12] = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!'};
  /* 为str1字符数组分配13个字符时,打印结果为:str1 =hello world!
   * 为str1字符数组分配12个字符时,打印结果为:str1 = hello world!?@(不同环境可能结果不一样)
   */
  printf("str1 = %s\n", str1);

 

  /* 为str2字符数组分配13个字符时,打印结果为:str2 =hello world!

   * 为str2字符数组分配12个字符时,打印结果为:str2 = hello world!hello world!(不同环境可能结果不一样)
   */

  printf("str2 = %s\n", str2);

  /* 为str1字符数组分配13个字符时,打印结果为:13

   * 为str1字符数组分配12个字符时,打印结果为:15
   */
  printf("The length of str1 is %d\n", strlen(str1));

  /* 为str1字符数组分配13个字符时,打印结果为:13

   * 为str1字符数组分配12个字符时,打印结果为:12
   */
  printf("str1字符串有%d字节。\n", sizeof(str1));
  return 0;
}

/*总结:

 *对于字符串,记住要留一个字节给'\0'

 */

转载于:https://www.cnblogs.com/zhouhaiyang/p/5361643.html

你可能感兴趣的文章
网络 基于TCP协议socket编程
查看>>
现代软件工程讲义 目录
查看>>
Akka2使用探索6(Futures)——实现并发和异步
查看>>
【持续更新】jQuery 实用技巧
查看>>
大象也能起舞,Citrix X1计划让你对笔记本电脑say good bye
查看>>
Nginx 之常见报错问题解决
查看>>
linux 防爆破方法
查看>>
Elasticsearch的使用场景深入详解
查看>>
day10---paramiko ssh ftp
查看>>
2、通过ipmitool工具修改IPMI的WEB密码
查看>>
云盘关闭,教你用蒲公英搭建私有云
查看>>
Spring Cloud 入门教程5、服务容错监控:Hystrix Dashboard
查看>>
很好的学习平台
查看>>
hibernate学习笔记3
查看>>
SQL Server 2005 日常运维检查操作手册
查看>>
利用jquery和jsonp来获取跨站数据,并实现cookie共享
查看>>
100万并发连接服务器笔记之Java Netty处理1M连接会怎么样
查看>>
表单工作流审核步骤抄送功能介绍
查看>>
JPPF并行计算框架类加载机制研究
查看>>
Spark(四) -- Spark工作机制
查看>>