字符串和字符串函数复习

1。字符串常量 string constant :位于一对双引号中的任何字符。双引号里的字符加上编译器自动提供的/0,作为一个字符串被存储到内存里。

2。字符串常量属于静态存储static storage类。 在程序运行中只存储1份。

3。指定数组大小时,数组元素至少要比字符串长度大1。通常,让编译器决定数组大小是非常方便的。数组的大小必须是整形常量。

4。数组名是常量,指针是变量。指针可是用增量运算符。数组的元素是变量(除非const),数组名不是。

5。字符串数组没一个指针指向相应字符串的第一个字符。 const char *mytal[LIM]={" "," "," "};此数组不存放字符串,只存放其地址。

6。字符串输入

    1)gets()的代码是用return 关键字返回字符串的地址。程序把这个地址分配给指针。while(gets(name)!=NULL)

    2)fgets()需要第二个参数说明最大读入字符数。第三个参数说明读哪个文件。从键盘读取时,可用stdin。ptr=fgets(name,MAX,stdin);会把换行符存储到字符串里。

    3)scanf()更基于获取单词get word,而不是获取字符串。返回一个整数值,是成功读取的项目数。当遇到文件结束时返回EOF。

7。字符串输出

    1)puts()显示字符串时自动在其后添加一个换行符。遇到空字符会停止。确保有空字符存在。

    2)fputs()需要第二个参数说明要写的文件。可用stdout作为参数输出显示。不为输出自动添加换行符。

    3)printf()不自动在新行输出每一个字符串,但可以格式化多种数据类型。

8。const char *string和const char string[]作为形式参数的区别

        从技术上来说,两者等价。用方括号符号的一个用意是提醒用户这个函数处理的是数组。但在使用字符串时,实际的参数可以是数组名、引起来的字符串,或被声明为* char类型的变量。使用const char *string可以提醒实际的参数不一定是一个数组。

9。字符串函数

    1)strlen()函数。可以得到字符串的长度。不包括/0。

    2)strcat()函数。接受2个参数。将第二个字符串的一份拷贝添加到第一个字符串的结尾。从而使第一个字符串成为一个新的组合字符串,第二个字符串没有改变。   strcat()函数是char *类型。此函数不检查第一个数组是否能够容纳第二个字符串。

    3)strncat()函数。接受三个参数。说明最多允许添加的字符的数目。

    4)strcmp()函数。比较2个字符串。如果两个字符串参数相同,那么返回0。在比较时只看第一个空字符之前的部分。

          关于返回值。如果第一个字符串的在字母表中的顺序先于第二个字符串,strcmp()返回一个负值。相反,返回的就是正值。如果两个字符串中初始的字符相同,strcmp()函数会一直往后查找,直到找到第一对不一致的字符。通常只在意是否0值。

    5)strncmp()函数。此函数比较字符串时,可以比较到字符串的不同处,也可以比较完由第三个参数指定的字符数。

    6)strcpy()和strncpy函数。strcpy()函数在字符串运算中的作用等价于赋值运算符。strcpy()第一个参数不需要指向数组的开始,这样就可以只复制数组的一部分。需要注意的是,strcpy()从源字符串复制空字符。

         函数调用strncpy(target,source,n)从source把n个字符(或空字符之前的字符,由两者中最先满足的那个决定何时终止)复制到target。因此,如果源字符串的字符数比n小,整个字符串都被复制过来。包括空字符。函数复制的字符数绝对不会超过n,因此如果源字符串还没结束就达到了限制,就不会添加空字符。这样,最终的字符串可能有也可能没有空字符。因此,程序设置的n比目标数组的大小要少1。确保空字符放到数组的最后一个元素里。

    7)sprintf()函数。作用和printf()一样,但是它写到字符串里而不是输出显示。因此它提供了把几个元素组合成一个字符串的一个途径。sprintf()的第一个参数是目标字符串的地址,其他参数和printf()一样。

    8)ANSI C库有20多个处理字符串的函数。

10。命令行参数。C编译器允许main()没有参数,或者有2个参数。第一个参数是命令行中的字符串数,这个int参数惯例被称为argc。系统使用空格判断一个字符串结束、另一个字符串开始。第二个参数是一个指向字符串的指针数组。命令行中的每个字符串都存储到内存中,并分配一个指针指向他。这个指针数组惯例被称为argv。很多环境里允许使用引号把多个单词集中在一个参数里。

11。把字符串转换为数字。数字既能以字符串形式也能以数字形式存储。以字符串形式存储数字就是存储数字字符。对于数字运算,C要求数字形式。但是在屏幕上显示数字却要求字符串形式。

        atoi()函数以字符串为参数,返回相应的整数值。atof()函数返回double类型的值。atol()返回long类型的值。

        strtol()和strtoul()函数可以识别并报告字符串中非数字部分的第一个字符。还允许指定数字的基数。

       strtol的函数原型:long strtol(const char *nptr,char **endptr,int base);nptr是一个指向希望转换的字符串的指针,endptr是指向标志输入数字的结束字符的指针的地址。base是数字的基数。

        在比较字符串时,应该用strcmp()而不是关系运算符,应该用strcpy()或strncpy()函数,而不是用赋值运算符来把字符串赋值给字符数组。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值