C语言(字符数组与字符串、输入输出缓存)

字符数组

        1、类型相同

        2、顺序排列

        3、元素为char的字符数组可以存储字符串的

 初始化字符数组

char str[20] = {'H','e','l','l','o'};

char str[20] = "Hello";
char str[20] = {'H','e','l','l','o','\0'};

 打印字符数组

#include <stdio.h>

int main()
{
    char str[20] = {'H','e','l','l','o'};

    printf(str);
    printf("\n");
    printf("%s",str);
    printf("\n");
    return 0;
}

        初始化列表长度小于数组长度时正常打印

        初始化列表长度等于数组长度时,无\0,无结尾

        初始化列表长度大于数组长度时,无\0,无结尾

测量字符串的长度

        1、使用循环

#include <stdio.h>

int main()
{
    char str[20] = "HelloWorld";
    int len = 0;
    while(str[len] != '\0')
    {
        len++;
    }
    printf("%d",len);
    return 0;
}

        2、strlen测量字符串长度

               需知:

                  a、strlen可以接受一个字符串作为参数

                  b、strlen返回值为这个字符串的长度

                  c、使用strlen,需包含头文件string.

                  d、strlen(str)测量从第一个元素直到\0的字符串长度

                        sizeof(str)测量数组本身占用空间的大小

#include <stdio.h>
#include <string.h>

int main()
{
    char str[20] = "HelloWorld";
    int len1;
    len1 = strlen(str);            //测量str字符串长度
    printf("len1 = %d\n",len1);

    int len2;
    len2 = strlen("HelloWorld");   //测量“HelloWorld”字符串常量长度
    printf("len2 = %d\n",len2);

    printf("sizeof str %d\n",sizeof(str));
    printf("sizeof helloworld %d\n",sizeof("HelloWorld"));    //测量所占空间大小

    return 0;
}

//结果
len1 = 10
len2 = 10             //HelloWorld字符串长度
sizeof str 20         //字符数组有20个元素
sizeof helloworld 11  //字符串长度加上\0,占用11个字节

修改字符数组

        字符串常量不能修改,字符数组可以修改

#include <stdio.h>
#include <string.h>

int main()
{
    char str[20] = "abcde";
    printf(str);
    printf("\n");

    for(int i = 0;i < strlen(str); i++)
    {
        str[i] = str[i] - 32;            //将小写字母转换为大写字母
    }
    printf(str);
    return 0;
}

输入字符串

char str[20];
scanf("%s",str);
#include <stdio.h>
#include <string.h>

int main()
{
    char str[20];
    scanf("%s",str);        //scanf输入时没有\0,字符串可以正常结尾
    printf(str);
    printf("\n");

    for(int i = 0;i < strlen(str); i++)
    {
        str[i] = str[i] - 32;            //将小写字母转换为大写字母
    }
    printf(str);
    return 0;
}

putchar、getchar

putchar('A');        //输出单个字符

char c;
c = getchar();       //输入单个字符
#include <stdio.h>

int main()
{
    char c;
    c = getchar();
    c = c - 32;
    putchar(c);
    return 0;
}
#include <stdio.h>

int main()
{
    char str[] = "HelloWorld";
    int i = 0;
    while(str[i] != '\0')
    {
        putchar(str[i++]);
    }
    return 0;
}

输入输出缓存

        输出缓存

        eg:windows、linux 

#include <stdio.h>
#include <windows.h>    //使用sleep休眠500毫秒

int main()
{
    for(int i = 0; i < 10; i++)
    {
        printf("HelloWorld %d",i);
        sleep(500);
    }
    return 0;
}
//每打印一个休眠500毫秒
#include <stdio.h>
#include <unistd.h>    //使用usleep休眠500毫秒(500微秒*1000)

int main()
{
    for(int i = 0; i < 10; i++)
    {
        printf("HelloWorld %d",i);
        usleep(1000 * 500);
    }
    return 0;
}
//先休眠5000毫秒,最后一次性打印完

        行缓存:一行结束之后,必须刷新缓存(输入输出缓存都是行缓存)\n结束一行

        完全缓存:等到缓存区被填满才刷新缓存

输入缓存

#include <stdio.h>
int main()
{
    char c1,c2;
    c1 = getchar();
    putchar(c1);
    getchar();    //用于吸收上一个getchar的回车
    c2 = getchar();
    putchar(c2);
    return 0;
}

 getchar输出字符串

#include <stdio.h>
int mian()
{
    char str[20];        //可以存储19个字符,最后要加上\0
    int i = 0;
    while(i < 20 - 1)
    {
        char c;
        c = getchar();    //从从缓存区读取字符
        str[i++] = c;
        if(c == '\n')
        {
            break;
        }
    }
    str[i] = '\0';
    printf(str);
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值