江湖车侠|C和指针:如何快速上手C语言( 七 )


江湖车侠|C和指针:如何快速上手C语言这是for循环的循环体,它一开始计算当前列范围内字符的个数,然后决定是否继续进行循环 。 如果输入行比起始列短,或者输出行已满,它便不再执行任务,使用break语句立即退出循环 。
接下来的一个测试检查这个范围内的所有字符是否都能放入输出行中,如果不行,它就把nchars调整为数组能够容纳的大小 。
江湖车侠|C和指针:如何快速上手C语言最后, strncpy函数把选中的字符从输入行复制到输出行中可用的下一个位置 。 strncpy函数的前两个参数分别是目标字符串和源字符串的地址 。 在这个调用中,目标字符串的位置是输出数组的起始地址向后偏移output_col列的地址,源字符串的位置则是输入数组起始地址向后偏移columns[col]个位置的地址 。 第3个参数指定需要复制的字符数,输出列计数器随后向后移动nchars个位置 。
江湖车侠|C和指针:如何快速上手C语言循环结束之后,输出字符串将以一个NUL字符作为终止符 。 注意,在循环体中,函数经过精心设计,确保数组仍有空间容纳这个终止符 。 然后,程序执行流便到达了函数的未尾,于是执行一条隐式的return语句 。 由于不存在显式的return语句,所以没有任何值返回给调用这个函数的表达式 。 在这里,不存在返回值并不会有问题,因为这个函数被声明为void (也就是说,不返回任何值) ,并且当它被调用时,并不对它的返回值进行比较操作或把它赋值给其他变量 。
1.2补充说明
本章的例子程序描述了许多C语言的基础知识 。 但在你亲自动手编写程序之前,你还应该知道一些东西 。 首先是putchar函数,它与getchar函数相对应,它接受一个整型参数,并在标准输出中打印该字符(如前所述,字符在本质上也是整型)
同时,在函数库里存在许多操纵字符串的函数 。 这里我将简单地介绍几个最有用的 。 除非特别说明,这些函数的参数既可以是字符串常量,也可以是字符型数组名,还可以是一个指向字符的指针 。
strcpy函数与strncpy函数类似,但它并没有限制需要复制的字符数量 。 它接受两个参数:第2个字符串参数将被复制到第1个字符串参数,第1个字符串原有的字符将被覆盖 。strcat函数也接受两个参数,但它把第2个字符串参数添加到第1个字符串参数的末尾 。 在这两个函数中,它们的第1个字符串参数不能是字符串常量 。 而且,确保目标字符串有足够的空间是程序员的责任,函数并不对其进行检查 。
在字符串内进行搜索的函数是strchr,它接受两个参数,第1个参数是字符串,第2个参数是一个字符 。 这个函数在字符串参数内搜索字符参数第1次出现的位置,如果搜索成功就返回指向这个位置的指针,如果搜索失败就返回一个NULL指针 。strstr函数的功能类似,但它的第2个参数也是一个字符串,它搜索第2个字符串在第1个字符串中第1次出现的位置 。
1.3编译
你编译和运行C程序的方法取决于你所使用的系统类型 。 在UNIX系统中,要编译一个存储于文件testing.c的程序,要使用以下命令:
cc testing.c
a.out
在PC中,你需要知道你所使用的是哪一种编译器 。 如果是Borland C++,在MS-DOS窗口中,可以使用下面的命令:
hcc testing.c
testing
1.4总结
本章的目的是描述足够的C语言的基础知识,使你对C语言有一个整体的印象 。 有了这方面的基础,在接下来章节的学习中 , 你会更加容易理解 。
本章的例子程序说明了许多要点 。 注释以/*开始,以*/结束,用于在程序中添加一些描述性的说明 。


推荐阅读