您的位置 首页 > 数码极客

‘c语言如何输出所定义的值’c语言输出字母用什么定义

函数不一定非要使用C库中的标准函数,如果无法使用这些函数或者不想用它们,完全可以在getchar()和putchar()的基础上自定义所需的函数。假设你需要一个类似puts()但是不会自动添加换行符的函数。程序 put1() 给出了一个这样的函数。

/* -- prints a string without adding n */ #include <; void put1(const char * string) /* string not altered */ { while (*string != '0') putchar(*string++); }

指向char的指针string最初指向传入参数的首元素。因为该函数不会改变传入的字符串,所以形参使用了const限定符。打印了首元素的内容后,指针递增1,指向下一个元素。while循环重复这一过程,直到指针指向包含空字符的元素。记住,因为要从右向左运算,因此putchar(*string++)打印string指向的值,递增的是string本身,而不是递增它所指向的字符。

可以把程序作为编写字符串处理函数的模型。因为每个字符串都以空字符结尾,所以不用给函数传递字符串的大小。函数依次处理每个字符,直至遇到空字符。

用数组表示法编写这个函数稍微复杂些:

int i = 0; while (string[i]!= '0') putchar(string[i++]);

要为数组索引创建一个额外的变量。许多C程序员会在while循环中使用下面的测试条件:

while (*string)

当string指向空字符时,*string的值是0,即测试条件为假,while循环结束。这种方法比上面两种方法简洁。但是,如果不熟悉C语言,可能觉察不出来。这种处理方法很普遍,作为C程序员应该熟悉这种写法。

*注意*

为什么程序put1()中的形式参数是const char * string,而不是const charstring[]?从技术方面看,两者等价且都有效。使用带方括号的写法是为了提醒用户:该函数处理的是数组。然而,如果要处理字符串,实际参数可以是数组名、用双引号括起来的字符串,或声明为char *类型的变量。用const char * string可以提醒用户:实际参数不一定是数组。

假设要设计一个类似puts()的函数,而且该函数还给出待打印字符的个数。如程序 put2() 所示,添加一个功能很简单。

/* -- prints a string and counts characters */ #include <; int put2(const char * string) { int count = 0; while (*string) /* common idiom */ { putchar(*string++); count++; } putchar('n'); /* newline not counted */ return(count); }

下面的函数调用将打印字符串pizza:

put1("pizza");

下面的调用将返回统计的字符数,并将其赋给num(该例中,num的值是5):

num = put2("pizza");

程序使用一个简单的驱动程序测试put1()和put2(),并演示了嵌套函数的调用。

// -- user-defined output functions #include <; void put1(const char *); int put2(const char *); int main(void) { put1("If I'd as much money"); put1(" as I could spend,n"); printf("I count %d c;, put2("I never would cry old chairs to mend.")); return 0; } void put1(const char * string) { while (*string) /* same as *string != '0' */ putchar(*string++); } int put2(const char * string) { int count = 0; while (*string) { putchar(*string++); count++; } putchar('n'); return(count); }

程序中使用printf()打印put2()的值,但是为了获得put2()的返回值,计算机必须先执行put2(),因此在打印字符数之前先打印了传递给该函数的字符串。下面是该程序的输出:

If I'd as much money as I could spend,

I never would cry old chairs to mend.

I count 37 characters.

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“c语言如何输出所定义的值,c语言输出字母用什么定义,c语言输出怎么定义变量并赋,c语言中如何输出定义的值,c语言如何定义e,c语言如何定义范围”边界阅读