在字符数组中容易忽视的一些小的问题

来源:互联网 发布:jquery储存数据 编辑:程序博客网 时间:2024/05/21 13:22
vs里面的快捷键
编译程序:F7
运行程序:ctr+F5
打断点:F9
运行到断点位置:F5
单步执行:F10
单步进入函数:F11
结束调试:shift+F5
一. 在字符数组中容易忽视的一些小的问题:(这是我自己在学习这块时出现的问题)
在使用字符串处理函数时,应当在程序开始的地方加上
 #include<string.h>

1.首先,字符型数据是以整数形式(ASCII代码)存放的,因此也可用整型数组存放字符数据
例如:int c[10];
         c[0] = 'a';
对于字符型数组的初始化,最好在定义字符型数组时对它进行初始化,否则数组中个元素的内容是不可预料的;
如果初值的个数小于数组的长度,则只将这些字符赋给数组中前面的那些元素,其余的元素自动定为空字符('\0').
'\0'代表的是ASCII码为0的字符
例如: char arr[20]  = {'a','b','c','r'};
printf ("%s\n",arr);   程序不会出现错误





但是,如果char arr2[]  = {'a','b','c','r'};
printf ("%s\n",arr);  程序的结果会出现乱码,是因为printf函数在输出字符串时是输出到'\0'截止的,
而在arr2这个数组中只有4个字符,并没有'\0';





所以,在学习这块知识时应该注意这点细节问题

2.scanf函数输入字符串时遇到空格或者回车就会输入结束
gets(字符数组名)函数输入字符串时可以包含空格,是以回车结束的,这个函数的返回值是字符数组的起始地址,
这个了解就好,毕竟我们一般只用这个函数输入一个字符串,并不关心它的返回值

注意:puts和gets函数只能输出或者输入一个字符串


3.strcat(字符数组1,字符数组2)
  作用是将两个字符数组中的字符串连接起来,把字符串2接到字符串1的后面,函数的返回值为字符数组1的地址
 注意:字符数组1必须足够大,以便能够容纳连接后的新字符串
           连接时删掉了字符数组1后面的'\0',只在新的字符串后面保留'\0';

4.strcpy和strncpy函数   (字符串复制函数)
strcpy(字符数组1,字符串2)
     作用是把字符串2复制到字符数组1中去,所以字符数组1必须可以容纳被复制的字符串2,包括字符串2中的'\0';
   注意:“字符数组1”必须写成数组名的形式,“字符串2”可以是字符数组名,也可以是一个字符串常量
   例如:
    strcpy(str1,“china”);
   只能用字符串复制函数将一个字符串复制到另一个字符数组中,不能通过赋值的形式
strncpy(str1,str2,2)
  作用是将字符串2中的前2的字符复制到字符数组1中,但是复制的字符个数n不应该大于字符数组1中原有的字符个数(不包括‘\0’).

5.strcmp函数(字符串比较函数)
strcmp(字符串1,字符串2);
 字符串1和字符串2的形式可以是字符串常量,也可以是字符数组名
比较规则是:将两个字符串按从左到右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或者遇到'\0''为止。

比较的结果由函数值返回
    字符串1 > 字符串2,结果返回大于0的整数
    
    字符串1 < 字符串2,结果返回小于0的整数

    字符串1 = 字符串2,结果返回0

6.strlwr函数(转换为小写的函数)
   strlwr(字符串)
 作用是将字符串中的大写字母换成小写字母
  strupr(字符串)
作用是将字符串中的小写字母换成大写字母











1 0
原创粉丝点击