关于C语言中字符数组和字符串的输出

本文内容仅仅代表个人在学习中遇到的问题并作出的总结,如有错误的地方和别的想法可以联系一起学习讨论!


前言

初学C语言数组这块对,因为C语言中没有字串类型,只能使字符数组保存字符串来使用,但是字符数组和字符串数组输出时又有不同点,下面就来简单介绍下!

一、字符数组和字符串数组

字符和字符串的不同点:

①字符使用单引号' '括起来的并且只能是一字符或者转义字符,例如:'A'、'\0'

②字符串是用" "双引号括起来的 ,字符串结尾系统会默认家''例如:"hello!"、"w"

1、字符数组

定义一个字符:

char s[]={'h','e','l','l','o'};

2、字符串数组:

char s1[]="world";

二、过程分析

1.字符数组和字符串输出对比

字符数组长度为5,字符串长度为3('\0'占一个字符)

代码如下(示例):

#include<stdio.h>
int mian(int argc,const char *argv[]){
    char s[]={'h','e','l','l','o'};//定义一个字符数组
    char s1[]="wo";//定义一个字符串数组
    printf("%s\n",s);
}

 输出结果:hello

 原因分析:

        因为数组s是字符数组 ,使用printf输出的时候是以%s(字符串)形式输出的并且默认了至少是5byte,但是又因为字符串输出时遇到'\0'结束,字符数组中没有'\0',所以不会结束,但是字符数组 s1保存的字符串的长度 不够5byte,所以只输出结果:hello 

基于上述 原因 :字符长度为5byte,将组字符数组s1中保存的字符串长度也改为长度大于等于5byte,输出的结果就变为了字符数组s中的内容和字符数组s1中保存的字符串内容了,例如将s1="world" 输出 的结果为:helloworld

2.字符数组和字符数组以%s输出

代码如下(示例):

#include<stdio.h>
int mian(int argc,const char *argv[]){
    char s[]={'h','e','l','l','o'};//定义一个字符数组
    char s1[]={'w','o'};//定义一个字符串数组
    printf("%s\n",s);
}

结果:hello


 原因分析:

        因为数组s是字符数组 ,使用printf输出的时候是以%s(字符串)形式输出的并且默认了至少是5byte,但是又因为字符串输出时遇到'\0'结束,字符数组中没有'\0',所以不会结束,但是字符数组 s1保存的字符的长度 不够5byte,所以只输出结果:hello 

基于上述 原因 :字符长度为5byte,将组字符数组s1中保存的字符长度也改为长度大于等于5byte,输出的结果就变为了字符数组s中的内容和字符数组s1中保存的字符内容了,例如将s1={'w','o','r','l','d'}; 输出 的结果为:helloworld

总结

        C语言编程还需要多多动手,遇到不清楚的问题,可以通过代码现象判断总结。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值