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. 总结 

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

继续努力学习!

欢迎大家指正!!!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值