详解c语言main函数、printf函数、scanf函数与va家族
C语言入门与提升(1)——详解c语言main函数、printf函数与scanf函数,与va家族
前言:
为什么要学习C语言呢?C语言作为最古老的语言之一,走过了半个多世纪的风风雨雨,至今仍然长盛不衰,占据各大高校编程入门课的榜首,可以看出其重要性。作为面向过程语言,它与C++又可以以较小的代价接轨,所以在这里先讲清楚C语言,在C语言的基础上后期再分享数据结构和算法,以及C++编程。
最简单的也是最多的入门程序
#include<stdio.h>int main(){printf("hello world!\n");return 0;
}
那么稍微有点基础,懂得上csdn的同学肯定都知道这个是啥意思了吧,这里说明几个比较重要的点:
- #include表示添加头文件,实际在编译连接的过程中,就是体现在预编译阶段将头文件插入到该位置,所以我们就可以使用头文件 stdio.h 中写好的函数了。
- main函数是程序的入口,这里省略了参数 int argc, char *argv[],其中argc:是argument count 的缩写,保存运行时传递给main函数的参数个数。argv:是argument vector 的缩写,保存运行时传递main函数的参数,类型是一个字符指针数组,每个元素是一个字符指针,指向一个命令行参数。argv[0]指向程序运行时的全路径名;argv[1] 指向程序在命令行中执行程序名后的第一个字符串;以此类推直到argv[argc]......argv[argc] 在C++中指向nullptr,在C语言中指向NULL。
- 返回值是给到操作系统的,返回0,操作系统就认为你这个程序没有问题,相反,返回其他值就有问题,相应的值还会代表一些特殊的含义,比如说我们都熟知的404,表示服务器无法回应
再说明一下printf函数:
这个函数所在的头文件是stdio.h, 原型是int printf(const char *format, ...);
其中,format是格式控制字符串,也就是我们常用的%s, %d等,后边的省略号表示可变参数列表,也就是可以是任意长度的。至于我们自己写了可变参数后应该如何使用呢?就需要va家族了
va家族中有四个函数
1.va_list 先定义了一个指向可变参数列的参数;
2.va_start(xx,n) 表示开始对可变参数进行解析,第一个参数是va_list变量,第二个是指可变参数从这个n之后开始。
3.n1= va_arg(xx,int)表示将当前可变参数指针指向下一个可变参数,并将其以int形式返回给n1;
4.当遇到n<0的情况,便退出循环.
5.va_end(xx)停止解析,将可变参数指针清空.
当然,还有其余的va函数,但是记住这四个,基本的使用就足够了
除此之外,printf的返回值是int型,表示输出字符的数量,这个是平时大家可能不会注意的一个点。下面是一个范例,巧妙的利用了printf函数返回值,输出了数字n十进制的位数
#include<stdio.h>int main(){int n;scanf("%d",&n);n = printf("%d",n);printf(" has %d digits!\n",n);return 0;
}
与printf函数类似的,还有scanf函数
scanf也在头文件stdio.h中,原型是 int scanf(const char *format, ...);
与printf函数类似,但是scanf的返回值是成功读入参数的个数,如果读入两个参数,都成功的话,就返回2,读入一个返回1,读入零个就返回零,而读取的时候到了文件末尾,读到了“\0”就返回 end of file,读到文件错误时也会返回end of file 也就是EOF, 所以我们在写代码时,想要一直读取就可以这么写
while(scanf("%d",&a) != EOF){
......
}
那么有时候我们读取一行字符串,可能包含空格,应该怎么利用scanf读取呢?
/*************************************************************************> File Name: 17.yihuo.c> Author:Anran > Mail:An77777@88.com > Created Time: Thu 26 Nov 2020 02:47:38 PM CST************************************************************************/#include<stdio.h>int main(){int n;char str[100];scanf("%[^\n]",str);printf(" has %d digits\n",printf("%s",str));return 0;
}
那么到这里呢,这几个函数和va家族基本就解释完了,有什么问题可以在评论区讨论哈!
详解c语言main函数、printf函数、scanf函数与va家族相关推荐
- C语言中get_put函数详解,C语言第五课之getchar函数和putchar函数
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 getchar函数也就是键盘输入函数,这个函数和scanf函数不一样!getchar函数没有scanf函数灵活.下面就给大家介绍下getchar函数的介绍 ...
- C语言scanf输入a3,【C语言】04 printf和scanf函数
1.printf函数 这是在stdio.h中声明的一个函数,因此使用前必须加入#include ,使用它可以向标准输出设备输出数据 1.用法 1> printf(字符串) printf(&quo ...
- c语言复杂函数转换,详解C语言常用的一些转换工具函数.pdf
详详解解C语语言言常常用用的的一一些些转转换换工工具具函函数数 1..字字符符串串转转十十六六进进制制 代码实现: void StrToHex(char *pbDest, char *pbSrc, i ...
- c语言 字符串 strncpy,详解c语言中的 strcpy和strncpy字符串函数使用
详解c语言中的 strcpy和strncpy字符串函数使用 strcpy 和strcnpy函数--字符串复制函数. 1.strcpy函数 函数原型:char *strcpy(char *dst,cha ...
- c语言malloc用法 数组,详解C语言用malloc函数申请二维动态数组的实例
详解C语言用malloc函数申请二维动态数组的实例 C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单. Sample one #include int main() { c ...
- 你是真的“C”——详解C语言函数模块知识(上篇)
详解C语言函数模块知识(上篇)
- C语言输入和输出(printf和scanf函数、putchar和getchar函数)
printf和scanf函数.putchar和getchar函数 输入输出操作都是由C标准函数库中的函数来实现的,要在程序文件开头用预处理指令#include把有关文件放在本程序中#include&l ...
- php 有indexof函数吗,详解PHP处理字符串类似indexof的方法函数
详解PHP处理字符串类似indexof的方法函数 这里有新鲜出炉的 PHP 设计模式,程序狗速度看过来! PHP 开源脚本语言 PHP(外文名: Hypertext Preprocessor,中文名: ...
- C语言printf与scanf函数
在程序开发中,经常会进行一些输入.输出操作 C语言中,提供了printf()和scanf()函数 Printf()函数,用于向控制台输出字符 Scanf()函数,用于读取用户的输入 Printf()函 ...
最新文章
- 限流算法(记录cyc大佬的专栏)
- thread安全性(写的不错)
- Spring 集成web环境
- Socket通信 客户端加密数据,传递数据密文到服务端,服务端解密密文 输出明文
- hdata datax交流总结
- VSCode如何关闭右侧预览功能 - 截图示下
- 男子刷机多次拒绝来电 维修师傅的做法被网友怒赞
- 服务器虚拟化的意思,服务器虚拟化存储的好处以及作用
- xcode Cornerstone 拷贝项目 提示框架头文件找不到的问题
- 新装的电脑执行maven install命令一直报Could not find artifact jdk.tools:jdk.tools:jar:1.7
- 百万级访问量网站的技术准备工作
- 移动机械硬盘测试软件,硬盘检测工具HDTune使用教程
- VS2013安装教程
- VFP_全面控制EXCEL
- 5g理论速度_5G手机用4G套餐速度达300M每秒,其原因令人费解,西瓜视频聊科技...
- 京东11万蓝领和1万白领,折射的是整个中国互联网
- c语言程序设计陈世清上海交通大学出版社,C语言程序设计
- 数值计算笔记之插值(四)三次样条插值
- Win10下C:\Users\John以账户名称命名的系统文件夹用户名的修改
- sas统计分析学习笔记(六)
热门文章
- 解决视频切片转码后无法无法快进的问题
- 国标GB/T28181协议下EasyGBS互联网无插件直播服务器对接华为VCN平台接入EasyGBS视频自动停止传输
- 《神经网络与深度学习》邱希鹏 学习笔记 (1)
- 在同一台机运行多个mysql 服务 多个主/从在同一主机_[ 原创 ]在同一台机运行多个Mysql 服务 多个主/从在同一主机...
- 2021年东莞高新企业补贴政策
- 用汇编语言写51单片机程序开头为什么一般都这样:ORG 0000H LJMP MAIN ORG 0030H
- 关于微信小程序在部分PC设备无法打开的问题
- java配置dsf,基于Spring-DM实现分布式服务框架(DSF)(一)
- 随机生成车牌号【python实现】
- kubeadm快速部署一套K8S集群