(由于篇幅较长,内容较全,建议收藏)
printf函数的一般格式为:
printf(格式控制字符串,输出值参数表);
如:
printf("f=%f,c=%f\n",f,c);
其中,f=%f,c=%f\n 是格式控制字符串,f,c 是输出值参数表。
输出带符号的十进制整数,正数的符号不输出。
如:
int a = 256,b = -125;
printf("%d\n%d",a,b);
输出结果为:

还可以在%和格式字符中间插入格式修饰符,用于指定输出数据的域宽(所占的列数),如用“%5d”,指定输出数据占5列,输出的数据在域内向右靠齐。如:
int a = 256,b = -125;
printf("%5d\n%5d",a,b);
输出结果为:

其中256前面有2个空格,-125前面有一个空格。
若要输出long(长整型)数据,则在格式字符d前面加字母l(代表long),即“%ld”。
输出一个实数(包括单精度、双精度、长双精度),以小数形式输出,有以下几种用法:
不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。系统处理的方法一般是:实数中的整数部分全部输出,小数部分输出6位。
如:
#include<stdio.h>
int main(){
double a = 1.0;
printf("%f\n",a/3);
return 0;
}
运行结果:

虽然a是double型,a/3的结果也是double型,但用 %f格式字符只能输出6位小数。
其中,m表示输出数据的宽度,即占m列,n表示小数点后保留n位小数。(若不需强调输出数据宽度,可直接用%.nf)
如:
#include<stdio.h>
int main(){
double a = 1.0;
printf("%20.15f\n",a/3);
return 0;
}
运行结果为:

其中,在0前面有3个空格,小数点后输出了15位小数。
注意:一个double型数只能保证15位有效数字的精确度,即使指定小数位数为50(如用%.50f),也不能保证输出的50位都是有效数值。
即在m.n前面加一个负号,能够让输出数据在域内向左靠齐。
如:
#include<stdio.h>
int main(){
double a = 1.0;
printf("%-20.15f\n",a/3);
return 0;
}
运行结果:

用于输出一个字符,如:
#include<stdio.h>
int main(){
char ch = 'a';
printf("%c",ch);
return 0;
}
输出结果:

也可以加格式修饰符指定域宽,如:
#include<stdio.h>
int main(){
char ch = 'a';
printf("%5c",ch);
return 0;
}
输出结果:

用于输出一个字符串,如:
printf("%s","Hello!");
输出结果:

#include<stdio.h>
int main(){
printf("Hello world!");
printf("\n");
printf("Hello,\nworld!");
return 0;
}
输出结果:

#include<stdio.h>
int main(){
int a = 123;
double b = 35.8,c = 1.0;
printf("a = %d,b = %d\n",a,b);
printf("a = %d,c = %f\n",a);
return 0;
}
运行结果:

分析:第一个printf函数中的输出参数b是double型,但对应的格式控制符为%d,当类型不一致时并不会进行类型转换,而会将实际转入的double型值当作需要的整形类型来理解,因此出现非预期结果;第二个printf函数中,格式控制字符串给出了两个%引导的格式字符,但是输出参数表中只有一个参数a。因此输出c的值默认为内存中a变量后面存储单元的数据值,即c的值我们不能确定。
附表1:
printf函数中用到的格式字符
| 格式字符 | 说明 |
|---|---|
| d | 输出带符号的十进制整数,正数的符号省略 |
| u | 以无符号的十进制整数形式输出 |
| o | 以无符号的八进制整数形式输出,不输出前导符0 |
| x | 以无符号十六进制整数形式(小写)输出,不输出前导符0x |
| X | 以无符号十六进制整数形式(大写)输出,不输出前导符0X |
| f | 以小数形式输出单、双精度数,隐含输出6位小数 |
| e | 以指数形式(小写e表示指数部分)输出实数 |
| E | 以指数形式(大写E表示指数部分)输出实数 |
| g | 自动选取f或e中输出宽度较小的一种使用,且不输出无意义的0 |
| c | 输出一个字符 |
| s | 输出字符串 |
附表2:
printf函数中用到的格式修饰符
| 格式修饰符 | 说明 |
|---|---|
| 英文字母l | 修饰格式字符d、u、o、x时,用于输出long型数据 |
| 英文字母L | 修饰格式字符f、e、g时,用于输出long double型数据 |
| 英文字母h | 修饰格式字符d、o、x时,用于输出short型数据 |
| 输出域宽m(m为整数) | 指定输出项输出时所占的列数 |
| 显示精度.n(n为整数) | 对于实数,表示输出n位小数;对于字符串,表示截取的字符个数 |
| -(减号) | 输出数字或字符在域内向左靠 |
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s