Linux下的C语言——第八节 字符数组,多维数组,习题

字符数组

1.定义初始化

单个字符初始化Char str[]={'a','b','c'};

字符串初始化   char str[]="abc";字符串会比字符多一个尾符号'\0'

初始化后str="abc"是错误的不能赋值。

2.输入输出

2.1输入字符串:char str[3]; gets(str);puts(str)其中gets有溢出风险。输入    

                        abc时能够保存,但已经溢出,因为存储的是abc\0.

2.2输入字符串:scanf("%s",str);不用&因为str本身就是地址

输入时遇到空格就会停止,例如:hello word 只保存hello

3.常用函数<string.h>   char str[]="hello";

Strlen(str);字符串长度结果是5,其遇到\0就结束了,故比sizeof小

Sizeof(str);占内存结果是6。

Strcpy(str,"abcdefg");拷贝。遇到\0结束会越界。

Strncpy(str,"abcdefg",num);最多把num长的拷贝过去

Strcat(str,"abc");把字符串链接到str,会溢出

Strncat(str,"abc",nun);最大链接num长的字符串

Strcmp(str1,str2);可以比较长度。返回int型,把两者的阿斯克码相减,返回正值str1长

Strncmp(str1,str2,num);可以比较前num位是否相同,相同返回0。

4.例题:

单词计数

static void wordcount()

{

    char str[128];

    int i,count=0,flag=0;

    printf("input:\n");

    gets(str);

    for(i=0;str[i] !='\0';i++)

    {

        if(str[i]==' ')//判断是用双等号

        {

            flag=0;//flag标记之前是否空格,是空格才能证明下一个字符是开始位置

        }

        else

        {

            if(flag == 0)//flag==0证明前一位是空格,这是单词开头

            {

                count++;

                flag=1;

            }

        }

    }



    printf("the count is %d\n",count);

}

[tom@CentOS7 arr]$ ./arrc

input:

i am a student

the count is 4

多维数组

【存储类似】 数据类型 变量名 [2] [3] [4];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值