知识点总结:
1.字符串和字符指针
如果定义一个字符指针接收字符串常量的值,该指针就指向字符串的首字符。这样,字符数组和字符指针都可以用来处理字符串。例如:
Char sa []=”array”;
Char *sp=”point”;
Printf(“%s”,sa);
Printf(“%s”,sp);
Printf(“%s\n”,”string”);
输出:
Array point string
调用printf(函数),以%s的格式输出字符串时,作为输出参数,数组名sa、指针sp和字符串“string”的值都是地址,从该地址所指定的单元开始连续输出其中的内容(字符),直至遇到‘\0’为止。
定义字符指针后,如果没有对它赋值,指针的值是不确定的,不能明确它指向的内存单元。
为了尽量避免引用未赋值的指针所造成的危害,在定义指针时,可先将它的初值置为空。 如:char *s=NULL。
2.常用的字符串处理函数
1.字符串的输入和输出:函数scanf()和gets()可用来输入字符串,而printf()和puts()输出字符串。它们在系统文件stdio.h中定义。
scanf:格式控制字符串中使用格式控制说明%s,输入参数必须是字符型组名。该函数遇回车或空格输入结束,并自动将输入的数据和字符串结束符‘\0’送入数组中。
printf:格式控制字符串中相应的格式控制说明用%s,输出参数可以是字符数组名或字符串常量。输出‘\0’结束。例如:printf(“%s”,s);
字符串输入函数gets(s):参数s是字符数组名。函数从输入得到一个字符串,遇回车输入结束,自动将输入的数据和‘\0’送入数组中。采用函数gets()输入的字符串允许带空格。实际上函数gets()有返回值,如果输入成功则返回值是字符串第一个字符的地址,如果输入失败则返回NULL。但一般情况下使用gets()主要是为了输入字符串,而不关心它的返回值。
2.字符串输出函数puts(s):参数s可以是字符数组名或字符串常量。输出时遇‘\0’自动将其转换为‘\n’,即输出字符串后换行。同样函数puts()也有返回值,如果成功执行了输出字符串的操作,则返回换行符号‘\n’,否则返回EOF。
字符串的复制、连接和比较及字符串长度:字符串复制、连接和比较及计算字符串长度的函数,在系统头文件string.h中被定义。
字符串复制函数char *strcpy(char *s1,char *s2):该函数把字串符s2复制到s1,直到遇到s2中的‘\0’为止。s1要有足够的空间容纳s2,且s1中的内容被覆盖,函数返回的是S1。同样可以简化以上函数的表达形式为:strcpy(s1,s2);参数s1必须是字符型数组基地址,参数s2可以是字符数组名或字符串常量。
3.用指针实现内存动态分配
动态内存分配的步骤:了解需要多少内存空间;利用C语言提供的动态分配函数来分配所需要的储存空间;是指针指向获得的内存空间,以便用指针在该空间内实施运算或操作;当使用完毕内存后,释放这一空间。
心得: 这次作业的第三题是一个很大的题,工程量很多,而且细节部分很难,这道题我重做了三遍又是问老师又是问同学,最不好检查的就是能运行但是数不对,我得从头到尾全看一遍。