C语言基础学习第四天,字符数组的输入输出

1. 数组大小

        a[5] = {5,3,4,2,1}  a[5] = {1,2,3}  a[5] = {}  sizeof都是20,不管初始化个数,直接看开辟空间的大小.

        a[] = {1,2,3,4,5} 也是20,没有定义开辟空间的大小,就看元素的个数。

 2. 清零函数

bzero

memset

加头文件

#include<strings.h>

#include<string.h>

原函数

Void bzero(void *s , size_t n)

Void *memset(void *s , int c , size_t n)

功能

数组清零

数组清零

参数

S:数组首地址,n:字节大小

S:数组首地址,c:设置的值 n:字节大小

返回值

数组首地址

例子

bzero( ch , sizeof(ch))

memset( ch , 0 , sizeof(ch))

 一般用的memset比较多,我们来看一下它的实际运用

#include<stdio.h>
#include<string.h>
int main(int argc, char const *argv[])
{
    int a[10] = {1,2,3,4,5,6,7,8,9,10};   //定义数组
    for (int i = 0; i < 10; i++)
    {
        printf("%d ",a[i]);        //打印数组
    }
    putchar(10);         //换行
    memset(a,0,sizeof(a));      //数组清零
    for(int i = 0;i < 10;i++)
    {
        printf("%d ",a[i]);
    }
    putchar(10);
    return 0;
}

我们通过打印出来的数据,可以直观的感受到到memset的作用

PS:其中“n”字节大小,直接使用sizeof就可以

memset中设置的值 一般是0,其他不管。memset按字节赋值 int==4字节=32位

 3. 字符数组

        功能:用来存储字符串

        字符串以\0结束,定义数组元素个数时,要把\0考虑到。

char a1[6]={"hello"};   char a2[6]="hello";   char a4[]="hello";

以上三个的sizeof都是6,和int数组差不多

char a3[33]="hello";     这个是33

 3.1 输入输出

        3.1.1 scanf

  1. 每一个元素通过for单独输入,在循环中用 scanf 输入,语法:scanf(“%c” , ch[i]);
  2. 直接通过scanf输入,注意因为是字符串,格式要用%s,  语法:scanf(“%s”,ch);但是,当输入空格的时候,scanf默认输入完成。
  3. %[^\n]:想要通过scanf输入空格的话,%s要被替换成&[^\n]。scanf(“%[^\n]”,ch);

        3.1.2  gets puts

  1. gets: 终端输入字符串,参数:数组首地址,返回值:数组首地址
  2. puts:终端输出字符串,参数:数组首地址,返回值:输出字符的个数

                gets支持空格,puts自带换行功能 

3.2 实际元素个数 

  1. for :for(i = 0 ; i != ‘\n’ ; i++);  结束之后,i的值就是字符数组的有效个数
  2. strlen  需要加#include<string.h>头文件。功能:计算字符串的实际元素个数

 有些时候,sizeof也可以用来计算个数,那么它和strlen的区别是什么呢。我们做一个表格来对比一下。

sizeof

strlen

类型

关键字

函数

功能

计算数组开辟的空间

计算字符串的实际元素个数

!!!!!

包含’\0’

不包含’\0’

4. 总结 

        今天的内容就到这里吧,消化一下,接下来我们用所学的知识去写我们的第一个简单算法,冒泡排序和简单排序。

继续努力学习!

欢迎大家指正!!!

  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值