/*
** 时间 :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'
*/