朝花夕拾 · C语言 | 函数篇

发布时间:2026/7/26 6:52:56
朝花夕拾 · C语言 | 函数篇 一.字符输入输出函数1. putchar函数字符输出函数)从内存向终端输出一个字符。其一般形式为 putcharc,c既可以是字符型变量或整型变量。putchar(A); putchar(65); 输出AA2. getchar函数 字符输入函数)从终端向内存输出一个字符。getchar函数没有参数其一般形式为 getchar,函数的值就是从输入设备得到的字符。int retgetchar(); putchar(ret); printf(%d,%c\n,ret,ret); 输入 A 输出 A65,Aputchar与getchar可结合使用putchar(getchar()-32); 实现将终端输入的小写字母转换为大写输出3.printfprintf的一般形式为printf格式控制输出表列当二者数量不匹配时多余位随机输出整型1. %u 以十进制无符号整型输出2. %lu 以十进制无符号长整型输出%ld 以十进制长整型输出由于int与char型兼容%c也可输出整型如输出int时会将高位截断保留低八位转换为对应的ASCII码值虽结果有误但语法正确浮点型3. %f 以float型输出也可以输出double%lf 以double型输出八进制4. %o 以八进制输出%#o 以0xxx输出八进制十六进制5.%x 以十六进制输出%#x 以0x输出十六进制小写%#X 以0X输出十六进制科学计数法:6. %e%E \ 输出 域宽输出7. %nd 以n位域宽输出若数据大于n位则以实际位数输出否则左侧补空%-nd 以n位域宽输出左对齐%0nd 以n位域宽输出并且前面补0%.nf 以n位小数输出%m.nf 以m位域宽n位小数输出%-0nd 报警告只会左对齐不补零八进制与十六进制也可指定输出域宽如%8o表示输出八位八进制数%8x表示输出八位十六进制数此外%lo与%lx则可表示以八和十六进制输出long型。八进制和十六进制输出无关符号int a -1; printf(十进制(有符号): %d\n, a); // 输出-1 printf(八进制(无符号): %o\n, a); // 输出3777777777732位系统或177777777777777777777764位 printf(十六进制(无符号): %x\n, a); // 输出ffffffff32位系统或 ffffffffffffffff64位总结如下图所示4. scanf将从终端输入的值存入已开辟的内存地址中。1.格式说明在输入整型时可以使用空格Tab与Enter隔开两数除此之外用其他字符则会直接中断输入舍弃后续读入的数字。scanf(%d %d,m,n); scanf(%d%d,m,n); 这两种写法相同同时若输入小数则只会保存整数部分在%c输入字符时 中间加空格可吸收所有空格Tab与Enter。scanf(%c %c,a,b);//可吸收空格Tab与Enter scanf(%c%c,a,b);//读取空格Tab与Enter因为其也是字符2.注意事项此外 %f 不能接收double型且双引号里写了什么在输入时也要相同所以除了格式控制符之外尽可能少写其他数据。以下是使用scanf时应注意的事项。此外当有多次scanf输入时在终端会连续读取int a char ch scanf(%d,a); //getchar(); scanf(%c,ch); 当输入一个整型之后会继续读取下一行的字符输入可使用getchar吸收空格等注意getchar只能读取一个字符 int ch; while ((ch getchar()) ! \n ch ! EOF); //通过循环可实现持续吸收缓存5. puts/getsputs 将字符串从内存输出到终端自动换行char str[128]{hello,world}; puts(str);gets 将字符串从终端读到内存字符串数组可能造成越界访问。char str[128]{0}; gets(str);二.函数定义的一般形式三.函数的参数与值四.函数的调用五.函数的嵌套与递归未完待更。。。