问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

结合if putchar getchar等谈谈对c语言学习的看法

发布网友 发布时间:2022-05-18 02:45

我来回答

1个回答

热心网友 时间:2023-10-06 08:10

C语言中的getchar, scanf, putchar, printf学习
[摘要:输进战输出功效并非C说话自身的构成局部,他们属于规范库局限,应用输进输出相干函数是必需写:#includestdio.h 。文件名用尖括号括起去时,预处置惩罚器将到特定地位查找而没有是正在工]

输入和输出功能并不是C语言本身的组成部分,他们属于标准库范围,使用输入输出相关函数是必须写:#include<stdio.h> 。文件名用尖括号括起来时,预处理器将到特定位置查找而不是在工程中。

常用的标准的输入输出有:
getchar(void), scanf(char *format, …); putchar(c), printf(char*format, arg1, arg2 ,…)

C语言中,用Dos窗口输入数据时,长度满足输入函数要求并且按下了回车键才能结束本次输入。如果长度满足(包括超出)没有按下回车键,继续等待输入直到按下回车键,如果按下回车键但长度没有达到要求,继续等待输入,直到长度满足要求并且按下回车键。
输入结束后,输入函数接收完所需要的数据或者无法与输入数据匹配时结束(终止)执行。
超出的输入数据(包括回车符)停留在缓存中,等到下一次有输入函数时,传递给输入函数。
在char型的输入中空格、回车、换行等都当成字符处理。
而整形相关输入中,数据边界定义为下一个非数字字符或者指定的字符宽度,在非数字字符中,只有空白符(包括空格、制表符、回车、换页符)可以被自动被忽略。

输入:

int getchar(void)
从标准输入中(一般为键盘)一次读取一个字符,空格回车等都当成一个字符,是最简单的输入机制。
返回:调用时输入字符的ASCII值,遇到文件结尾,返回EOF(符号常量,一般为-1)。
使用“prog <输入文件名”实现输入重定向(改变输入源,例如把键盘输入改成文件输入)
文本流有一系列行组成,每一行的结尾是换行符,如果系统不遵行这种模式,标准库将其转变为该种模式,例如输入端把回车符和换页符都转换为换行符,输出端反向变换。

int scanf(char *format, …)
按照format的格式读入字符,存储在后面参数所代表的地方,因此后面的参数一定是地址(指针)。
返回:成功匹配并赋值的输入项个数,遇到文件结尾,返回EOF,下一个字符与格式说明不匹配,返回0(EOF与0不是同一个概念)
扫描完字符串或者碰到某些输入无法与控制字符匹配时,函数终止

intsscanf(char *string, char *format, arg1, arg2, …)
按照format格式扫描string中的字符,保存在arg1,arg2中,arg1,arg2也必须是地址(指针)。其他与scanf相同
文本流有一系列行组成,每一行的结尾是换行符,如果系统不遵行这种模式,标准库将其转变为该种模式,例如输入端把回车符和换页符都转换为换行符,输出端反向变换。

Format由三部分组成,”<空格制表符(通常省)> <普通字符(可省)> <转换说明(不可省)>”
空格和制表符在处理过程中被忽略。
普通字符(不包括%),用来严格的和输入流中的数据不对,若不相同,则后面的不能输入。
转换说明包括:
% <禁止符*(可省)> <数值(最大宽度,可省)> <h, l或L(对象宽度,可省)> <转换字符>
转换说明中有赋值禁止字符*,跳过该输入字段,不进行赋值。
执行scanf获得的数据个数由转换字符的个数决定。
转换字符含义参考其他说明。

输出:

int putchar(c)
函数putchar(c)将字符c送到标准输出上,默认情况下是显示屏。
返回:输出的字符,发生错误则返回EOF
使用“>输出文件名”实现输出重定向(改变输出地,例如把输出到屏幕改为某个文件)
文本流有一系列行组成,每一行的结尾是换行符,如果系统不遵行这种模式,标准库将其转变为该种模式,例如输入端把回车符和换页符都转换为换行符,输出端反向变换。

int printf(char *format, arg1, arg2 ,…)
在format的控制下打印。
返回:打印的字符数。

int sprintf( char *string, char*format, arg1, arg2, …)
功能与printf相同,但是输出到string中而不是标准的输出中,要保证string足够大。
文本流有一系列行组成,每一行的结尾是换行符,如果系统不遵行这种模式,标准库将其转变为该种模式,例如输入端把回车符和换页符都转换为换行符,输出端反向变换。

Format由两部分组成,”普通字符、转换说明”
普通字符直接输出到数据流里
转换说明不直接打印,控制printf中参数的转换和打印,格式为“%<格式控制>字符”
其中格式控制符为 -x.x样式,控制对其方式、宽度、精度(输出长度)等,字符控制输出的格式。

例:输入n(n不超过100)个整数,各个整数用逗号隔开。
方法一:
思路:利用getchar()函数逐个字节(字符)输入,找出逗号的位置。然后将逗号之间的字符转换成整形数放到数组里。
char str[100] = {0};
int num[50] = {0};
char comma[50] = {0};
char i = 0,j = 0,k = 0;

str[i] = getchar(); //下面的输入是从str[1]开始,这里
while(10 != str[i++]){ //以回车符结束输入
str[i] = getchar();
if(str[i] == 44){ //记录逗号的位置
comma[j++] = i;
}
}
comma[j] = i - 1; //i是回车符的位置(判断的时候执行了++),相当于最后一个逗号,j从开始,j+1为字符串中整数的个数
num_real = j;
for(i=(comma[0]-1);i>=0;i--)
num[0] = num[0] + (str[i]-48)*pow_self(++k); //解决第一个数,j=0无法确定下限
k = 0;
for(;j>=1;j--){
for(i=(comma[j]-1);i>comma[j-1];i--)
num[j] = num[j] + (str[i]-48)*pow_self(++k); //num从开始,共j+1个数
k = 0;
}

其中pow_self函数定义为:
int pow_self(char num)
{
int cnt;
int sum = 1;
for(cnt =1;cnt<num;cnt++)
sum = sum*10;
return sum;
}

方法二:
Scanf和getchar配合,getchar负责接收逗号,逗号拥有空白符的功能。
int a[5] = {0};
int i = 0;

scanf("%d",&a[0]);
while(10 != getchar()) scanf("%d",&a[++i]);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
vivo y3t手机能拨打和接听电话,不能收发短信 vivoy3t手机突然接收不到短信 vivoy3短信消息怎么提醒 无奈什么意思是什么 怎样让炒出的丝瓜不发黑? 钟表是以什么计量时间 钟表以( )、()、( )计量时间。 钟表以( )、()、( )单位计量时间 紫荆花开放时间 《青春 须臾成殇》渭伊的txt全集下载地址 对计算思维和c语言的理解? 对于学习C语言,说说你的看法? 谈谈对c语言的认识 微博没有手机号怎么解除异常 我家的电话线在打雷的一天晚上坏了!第二天我打10010叫他们修,他们说记录了24小时会有专人去处理,可... 为什么打雷不可以用座机 猫上面的电话线没拔掉,打雷会坏吗? 电脑打雷时没把电话线拔掉后网速变慢还会断网 打雷天用电脑上网没事吧。。网线接的电话线。 打雷时是否要拔掉网线,家里是那种电信的电话线网线,接了路由器跟猫 网线是用电话线接的,打雷时路由器要断电吗? 打雷时,发现电话线在闪,并且有声音 打雷时接宽带的电话线要拔掉吗。为什么啊。 打雷时,是拨与网线连接的那根分机电话线还是所有电话线? 打雷的时候,拔掉的电话线和网线应该怎么放置 为什么我把拼多多退出登录几个小时,等我再登录,对方还能偷我的定时红包 拼多多签到偷红包时候,为什么有的人没有猫粮却偷不到他的定时红包呢 打雷只关电源,不拔电话线或网线有可能被烧吗? 梦见亲人被开水瓶炸断手指 [转载]APP如何做才赚钱? 2. 请问C语言是:(考察学员对C语言的基本认识。难度:简单) 大学生对C语言程序设计的看法 送女朋友东西!在礼物上面写什么好! 呼和浩特市泽海新能源科技有限公司怎么样? 白西服里面怎么搭配 白西服搭配什么颜色衬衫 怎么感谢父母千里之外寄来东西 白色西装衫配什么衬衫好看? 我收到别人从千里之外邮到的东西,该怎样写首诗来表达 为什么半自动密码锁放上电池放上盖子为什么就没电了 - 信息提示 马上就到情人节了,送给千里之外的她什么礼物好呢? 半自动密码有内外把手不联动吗? 这是女朋友发了三个晚上给我设计的生日礼物,我在千里之外上班,收到礼物我很是惊喜与感动,……麻烦大家 给千里之外的亲人送礼物,是不是感到礼重意更重。 你怎么看李现穿白色西服配印花衬衫? 纯白西服应该配什么颜色的衬衫?浅蓝可以吗? 快七夕了,要给远在千里之外的网友什么礼物呢?(我在追她) 米白色的休闲西装搭配什么衬衣? 我在千里之外上班,今天是我生日,有生以来收到第一份生日礼物是女朋友亲手给我做的,为了给我做生日礼物