字符串

C语言中字符串:以0(整数0)结尾的一串字符。
0或者’\0’是一样的,但是和’0’不同。
0标志字符串的结束,但它不是字符串的一部分。计算字符串长度时不包含这个0,字符串以数组的形式存在,以数组或指针的形式访问。
处理字符串的函数#include<string.h>
char ch[5]={‘h’,’e’,’l’,’l’,’o’};
一、将数字字符串转换成整数。
输入一个以回车符结束的字符串(至少10个字符),由数字字符组成,将该字符串转换成整数后输出。

#include<stdio.h>
int main()
{
    int i,n;
    char a[10];
    printf("input a string\n");
    i=0;
    while((a[i]=getchar())!='\n')
    {
        i++;
    }
        a[i]='\0';

        n=0;
        for(i=0;a[i]!='\0';i++)
        {
            if(a[i]<='9'&&a[i]>='0')
            {
                n=n*10+(a[i]-'0');
            }
            else //遇见非数字结束转换
                break;
        }
        printf("num=%d\n",n);
}

字符串变量
char *str=”hello”;//指针指向了字符数组。
char word[]=”hello”;
char love[10]=”hello”;//在love中占据6个空间,因为有结束的标志0。

字符串以数组的形式存在
不能用运算符对字符串进行运算。
通过数组可以遍历字符串。

如果构造一个字符串:用数组。
如果处理一个字符串:用指针。

字符串常量
用双引号括起来的东西。例如:“hello”
hello会被编译器变成一个字符数组,放在某处,这个数组长度是6。结尾还有一个0.
两个相邻的字符串会被自动连接起来。

char*是否为字符串
字符串可以表达为char*的形式,但是char *不一定是字符串。

char*的意思是说:这有一个指针,这个指针指向一个字节或者一串连续的字节,但它并不一定是字符串。
本意是:指向字符的指针,可能指向的是字符的数组。

字符串的输入和输出。

char string[8];
scanf("%s",string);
printf("%s",string);

scanf读入一个单词,(到空格,tab或者回车为止)。

上面的输入输出是有问题的。scanf是不安全的,因为不知道要输入的内容的长度。

应该修改为:

char string[8];
scanf("%7s",string);//目的是告诉scanf最多只能读入7个字符,超过7个就不要了。
printf("%7s",string);

空字符串

char a[10]="";
这个数组的长度只有1.
这是一个空的字符串,a[0]=='\0'

字符串数组

char **a;//a是个指针,指向另一个指针,那个指针指向一个字符(串)。
char a[][];//a是一个二维数组。
char a[][10]={"hello"};/*a[0]相当于char[10]*/

这里写图片描述

使用%c输入输出字符数组中的字符

#include<stdio.h>
int main()
{
    int i;
    char a[3];
    printf("input a string\n");
    scanf("%c%c%c",&a[0],&a[1],&a[2]);

    printf("结果为\n");
    for(i=0;i<3;i++)
    {
        printf("%c",a[i]);
    }
    printf("\n");
}

用getchar和putchar函数输入输出。

#include<stdio.h>
int main()
{
    int i;
    char a[3];
    printf("input a string\n");
    for(i=0;i<3;i++)
    {
        a[i]=getchar();
    }

    printf("结果为\n");
    for(i=0;i<3;i++)
    {
        putchar(a[i]);
    }
    printf("\n");
}

运行结果相同。
用scanf函数和getchar函数给字符数组逐个输入字符的共同特点是:
1、系统不会自动加‘\0’,如果需要字符数组按照字符串存储 ,需要给输入字符后面的元素赋值‘\0’。
2、空白字符(空格、‘\0’、‘\t’)也作为字符输入
3、用printf函数和putchar函数输出字符数组的字符共同特点是:
遇到’\0’不结束,不换行(中间的’\0’变成空格)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值