发表日期: 2022-09-01 14:40:37 浏览次数:76
上往建站提供网站建设,网站推广,网店设计,网站建设,企业网站,网站制作,网页设计,网站建设,企业网站制作,网页制作 高端定制网站建设,H5页面设计开发,微网站,微信运营,移动端设计开发,手机端网站,小程序,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设、网络推广、微信公众号代运营、商城小程序开发定制、网店设计等业务,专业团队服务,效果好。。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-拉萨上往建站
You entered: 123
如果输入123456789(长度大于5)结果为:
Enter a value :123456789
You entered: 123456789
虽然正常显示了,但是系统提示程序崩溃了
如果不能正确使用gets()函数,带来的危害是很大的,就如上面我们看到的,输入字符串的长度大于缓冲区长度时,并没有截断,原样输出了读入的字符串,造成程序崩溃。
考虑到程序安全性和健壮性,建议用fgets()来代替gets()。如:
#include <stdio.h>
int main( )
{
char str[5];
printf( "Enter a value :");
fgets( str,5,stdin ); //fgets()函数;
printf( " You entered: ");
puts( str );
return 0;
}
simone
simone
183***1483@qq.com
参考地址
6年前 (2017-03-23)
Mrodot
mro***@qq.com
参考地址
27
Windows、Unix、Mac不同操作系统的换行问题 回车符和换行符
一、概念:
换行符‘ ’和回车符‘’
(1)换行符就是另起一行 --- ' ' 10 换行(newline)
(2)回车符就是回到一行的开头 --- '' 13 回车(return)
所以我们平时编写文件的回车符应该确切来说叫做回车换行符
CR: 回车(Carriage Return) LF: 换行(Line Feed)
二、应用:
(1)在微软的MS-DOS和Windows中,使用“回车CR('')”和“换行LF(' ')”两个字符作为换行符;
(2)Windows系统里面,每行结尾是 回车+换行(CR+LF),即“ ”;
(3)Unix系统里,每行结尾只有 换行LF,即“ ”;
(4)Mac系统里,每行结尾是 回车CR 即''。
Mac OS 9 以及之前的系统的换行符是 CR,从 Mac OS X (后来改名为“OS X”)开始的换行符是 LF即‘ ',和Unix/Linux统一了。
三、影响:
(1)一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;
(2)而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
(3)Linux保存的文件在windows上用记事本看的话会出现黑点。
四、可以相互转换:
在linux下,命令unix2dos 是把linux文件格式转换成windows文件格式,命令dos2unix 是把windows格式转换成linux文件格式。
在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换. 经过这种传输的文件字节数可能会发生变化.
如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本。
一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在Linux上运行就生成LF格式换行的文本文件。
Mrodot
Mrodot
mro***@qq.com
参考地址
5年前 (2018-01-12)
halo
g51***vip.qq.com
83
学 C 语言的时候,字符输入曾经困扰过我,例如这段代码:
int i;
char c;
scanf("%d%c", &i,&c);
这时候变量 c 中存储的往往不是你想输入的字符,而是一个空格,然后我们又会这样来写:
int i;
char c;
scanf("%d", &i);
scanf("%c", &c);
这时候,我们发现,根本没有输入字符C的机会,这是为什么?因为输入流是有缓冲区的,我们输入的字符存储在那,然后再赋值给我们的变量。我们可以这样改:
int i;
char c;
scanf("%d", &i);
while((c=getchar())==' ' || c==' ');
c = getchar();
这个办法是一直读取,读到没有空格和换行就跳出循环,但是有一个更好的解决办法;
int i;
char c;
scanf("%d%[^' '^' ']", &i, &c);
这是用正则表达来控制输入格式为非空格非换行。
halo
halo
g51***vip.qq.com
4年前 (2018-04-05)
CSTwang
248***3362@qq.com
38
在进行输出时,若要用到用来输出实数的 f 格式符(以小数形式输出),有以下几种用法:
1、基本型,用 %f
不指定输出类型的长度,用系统根据情况决定,一般是实数中的整数部分全部输出,小数部分输出六位。例:
#include<stdio.h>
int main()
{
double a=1.0;
printf("%f ",a/3);
return 0;
}
运行结果:0.333333
专业网站建设-网站设计-网站制作与网站开发-高端品牌企业宣传策划-拉萨上往建站
上往建站提供微信小程序+公众号商城+企业网站建设一站式微信网站商城营销系统,微信小程序是一种依附于微信体内即点即用,无需下载安装即可使用的轻应用,它开启了移动端“触手可及”的梦想,致力于苏州企业网站建设与公司网站制作,全国用户超10万,10余年的网站开发和建站经验,主营:网站建设、微信公众号代运营、商城小程序开发定制、网店设计等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
备案号: 苏ICP备2021016738号-6
CopyRight © 2021 上往建站 All Right Reserved 未经许可不得复制转载
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.club 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
全国服务热线:400-111-6878
linux系统下需要这样编译:不支持 gets 与 puts, 需要用 fgets 和 fputs。
将以下代码放到 test.c 文件:
编译执行以上代码,输出结果为:
ms0
261***255@qq.com
simone
183***1483@qq.com
参考地址
gets()与fgets()
gets()
gets函数原型:char*gets(char*buffer);//读取字符到数组:gets(str);str为数组名。
gets函数功能:从键盘上输入字符,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。
读取的换行符被转换为null值,做为字符数组的最后一个字符,来结束字符串。
注意:gets函数由于没有指定输入字符大小,所以会无限读取,一旦输入的字符大于数组长度,就会发生内存越界,
从而造成程序崩溃或其他数据的错误。
fgets()
fgets函数原型:char *fgets(char *s, int n, FILE *stream);//我们平时可以这么使用:fgets(str, sizeof(str), stdin);
其中str为数组首地址,sizeof(str)为数组大小,stdin表示我们从键盘输入数据。
fgets函数功能:从文件指针stream中读取字符,存到以s为起始地址的空间里,直到读完N-1个字符,或者读完一行。
注意:调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加'',并以str作为函数值返回。
借用教程实例,我把char str[100] 改为 char str[5]
如果输入123(长度小于5)结果为:
如果输入123456789(长度大于5)结果为:
虽然正常显示了,但是系统提示程序崩溃了
如果不能正确使用gets()函数,带来的危害是很大的,就如上面我们看到的,输入字符串的长度大于缓冲区长度时,并没有截断,原样输出了读入的字符串,造成程序