字符串输出格式

2024-04-15

字符串输出格式(精选6篇)

篇1:字符串输出格式

printf的格式控制的完整格式:

%-0m.nl或h格式字符

下面对组成格式说明的各项加以说明:

①%:表示格式说明的起始符号,不可缺少。

②-:有-表示左对齐输出,如省略表示右对齐输出。

③0:有0表示指定空位填0,如省略表示指定空位不填。

④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。

n指精度,用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。

⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

格式小结:

(1)最常用的格式是%d,含义是以10进制形式打印一个整数。

如果输出的整数是负数,则输出的第一个字符就是-号。

%d:按整型数据的实际长度输出。

%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。

%ld:输出长整型数据。

(2)%u格式与%d格式类似,只不过要求打印无符号10进制整数。

以无符号十进制形式输出整数。

对长整型可以用“%lu”格式输出。同样也可以指定字段宽度用“%mu”格式输出。

(3)%o格式请求输出8进制整数,以无符号八进制形式输出整数。

对长整型可以用“%lo”格式输出。同样也可以指定字段宽度用“%mo”格式输出。

(4)%x和%X格式请求输出16进制整数。

%x格式中用小写字母a,b,c,d,e,f来表示10到15之间的数,以无符号十六进制形式输出整数。

对长整型可以用“%lx”格式输出。同样也可以指定字段宽度用“%mx”格式输出。%X格式中用大写字母A,B,C,D,E,F来表示10到15之间的数

共同点:8进制和16进制整数总是作为无符号数处理的。

(5)%s格式用于打印字符串,与之对应的参数应该是一个字符指针,待输出的字符始于该指针所指向的地址,直到出现一个空字符(')才终止。%s:例如:printf(“%s”, “CHINA”)输出“CHINA”字符串(不包括双引号)。%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。

%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。

%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。

%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。

(6)%c格式用于打印单个字符:例如:

printf(“%c”,c);等价于 putchar(c);

(7)%g,%f和%e这三个格式用于打印浮点值。

%g格式用于打印那些不需要按列对齐的浮点数特别有用。其作用有二: 一,去掉该数尾多余的零(没有达到六位的数)

二,保留六位有效数字(多余六位的)

%e格式用于打印浮点数时,一律显示地使用指数形式:例如:输出圆周率时是:

3.141593e+00

两者的区别:

%g格式打印出的数是总共6位有效数字

%e格式打印出小数点后的6位有效数字

%f禁止使用指数形式来表示浮点数。因此圆周率输出为:3.141593

(但注意它的精度要求:也是小数点后6位有效数字)

(8)%%格式用于打印一个%字符。

(9)%E和%G只是在输出时用大写字母(E)代替了小写字母(e)

⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:

%f:不指定宽度,整数部分全部输出并输出6位小数。

%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。%-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。⑧e格式:以指数形式输出实数。可用以下形式:

%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。

%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。

⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。/*******************************************************************/ unsigned int i=295;

printf(“%dn”,i);

295

Press any key to continue

(1).可以在“%”和字母之间插进数字表示最大场宽。

例如: %2d 表示输出3位整型数, 不够2位右对齐。

例如: %5d 表示输出3位整型数, 不够5位右对齐。

例如: %10d 表示输出3位整型数, 不够10位右对齐。

unsigned int i=295;

printf(“%2dn”,i);

printf(“%5dn”,i);

printf(“%10dn”,i);

295

295

295

Press any key to continue

(2).补0或者其它

例如: %02d 表示输出3位整型数, 不够2位右对齐,补0。

例如: %05d 表示输出3位整型数, 不够5位右对齐,补0。

例如: %010d 表示输出3位整型数, 不够10位右对齐,补0。

unsigned int i=295;

printf(“%02dn”,i);

printf(“%05dn”,i);

printf(“%010dn”,i);

295

00295

0000000295

Press any key to continue

(3).负数

int i=-295;

printf(“%02dn”,i);

printf(“%05dn”,i);

printf(“%010dn”,i);

-295

-0295

-000000295

Press any key to continue

(4).可以控制输出左对齐或右对齐, 即在“%”和字母之间加入一个“-” 号可 说明输出为左对齐, 否则为右对齐。

unsigned int i=295;

printf(“%-02dn”,i);

printf(“%-05dn”,i);

printf(“%-010dn”,i);

295

295

295

Press any key to continue

(5).可以在“%”和字母之间加小写字母l, 表示输出的是长型数。

例如: %ld 表示输出long整数

%lf 表示输出double浮点数

(6).%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6, 小数点占一位, 不够9位右对齐。

例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除./*

unsigned int i=295;

printf(“%dn”,i);

printf(“%1dn”,i);

printf(“%09dn”,i);

printf(“%09dn”,(unsigned char)i);

printf(“%9dn”,(unsigned char)i);

printf(“%-9dn”,(unsigned char)i);

*/

/*

295

295

000000295

000000039

Press any key to continue

*/

/*******************************************************************/ 对于m.n的格式还可以用如下方法表示(例)

int m=10,n=5;

char ch[]=“abcdefghijklmnopqrst”;

printf(“%*.*sn”,m,n,ch);//输出为abcde

前边的*定义的是总的宽度,后边的定义的是输出的个数,分别对应外面的参数m和n。

我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式 /*******************************************************************/ “%08lxn”,4byte

“%04xn”,2byte

“%-2.2BX”,1byte

篇2:字符串输出格式

实验目的

1.熟练掌握栈和队列的特点。

2.掌握栈的定义和基本操作,熟练掌握顺序栈的操作及应用。3.掌握对列的定义和基本操作,熟练掌握链式队列的操作及应用, 掌握环形队列的入队和出队等基本操作。

4.加深对栈结构和队列结构的理解,逐步培养解决实际问题的编程能力。

实验要求

1.认真阅读和掌握本实验的算法。2.上机将本算法实现。

3.保存程序的运行结果,并结合程序进行分析。

4.上机过程中,能够熟练运用高级语言的程序调试器DEBUG调试程序。5.上机后,认真整理源程序及其注释,完成实验报告(包括源程序、实验结果、算法分析、心得体会等)。

实验内容

1.在VC++环境下编写调试队列初始化,删除结点,查找结点,插入结点的算法和函数。

2.把已布置作业中的算法改成程序,进行运行。

实验清单

#include #include

#define size 50

typedef struct { char str[size];int top;}seqstack;

void initstack(seqstack *s);int pop(seqstack *s,char x);int push(seqstack *s,char x);void main(){ int i,j;char str[size],a;seqstack *s;printf(“please input a string :n”);gets(str);s=(seqstack*)malloc(size);initstack(s);for(i=0;str[i]!=';i++){ push(s,str[i]);j++;} printf(“the changed string is:n”);for(j=i;j>0;j--){ pop(s,a);

} printf(“n”);}

void initstack(seqstack *s){

s->top=-1;}

int push(seqstack *s,char x){ if(s->top==size-1)

return(0);s->top++;s->str[s->top]=x;return(1);}

int pop(seqstack *s,char x){ if(s->top==-1)

return(0);else {

}

} x=s->str[s->top];s->top--;printf(“%c”,x);return(1);输入数据及相应运行结果

实验心得

在这节课中,我学会用调试这种方法来找出自己的错误

篇3:字符串输出格式

1 C语言字符数据的基本概念

1.1 字符常量和字符变量

C语言有丰富的数据类型, 包括基本类型、构造类型、指针类型和空类型, 其中基本类型中包含有字符型数据。字符型数据分常量和变量, 字符常量是由单引号’’括起来的ASCII字符, 如’a’。字符变量必须先定义后使用, 如char c1;即定义了一个字符变量c1。字符型变量可以用来存放字符常量, 且它只能存放一个字符, 如c1=’a’;。

1.2 字符串常量

C语言中, 字符串常量是由一对双引号””引起来的字符序列, 如”Intel”、“The C Program Language”。C语言中字符串一一位数组的形式存放在内存中, 因此’A’和“A”所表达的意义不同, ‘A’是单字符常量, 在内存中只占1个字节, 存放字符A的ASCII码, “A”是字符串常量, 在内存中共占2个字节, 其中一个字节存放A字符的ASCII码, 另一个字节自动存放字符串结束标记“�”。

1.3 字符数组

C语言中只有字符串常量而没有字符串变量, 字符串的存取操作必需借助字符数组来实现, 而不能以变量的形式直接进行存取, 存放一个字符串需要先定义一个字符型数组, 而后将字符串中的字符逐个作为字符数组的数组元素进行操作。字符数组中一个元素只能存放一个字符, 如char a:表示定义了一个一维字符数组a, 可存放5个字符, 或存放最大长度为4的1个字符串 (最后一个字符是字符串结束符‘�’) 。字符数组元素的引用通常采用循环结构实现对数组元素的逐个操作。字符数组的初始化分为逐个字符给数组元素赋值和用字符串常量给字符数组初始化两种形式, 由于逐个字符给数组元素赋值操作繁琐, 实际编程中常用字符串常量给字符数组初始化。

2 字符数据的输入与输出

C语言提供了字符数据的输入与输出除了C语言提供的常用scanf () 函数和printf () 函数进行输入与输出操作, 还提供了专用的字符输入函数getchar () 和字符输出函数putchar () 以及字符串输入函数gets () 和字符串输出函数puts () 。

2.1 字符数据的输入

2.1.1 scanf函数

scanf函数的作用是输入若干个任意类型的数据, 是一种格式输入函数, 利用scanf函数给字符变量赋值应使用格式说明“%c”即可实现字符输入。用scanf函数输入其他类型的数据时, 数据间可以用空格来分隔, 而用回车表示输入结束, 但用“%c”格式输入字符时, 空格和“转义字符”都会作为有效字符输入, 因此使用时容易出错。例如:scanf“ (%c%c%c”, &c1, &c2, &c3) ;若要将字符’a’、’b’、’c’分别赋给变量c1、c2、c3, 正确的输入方法是“abc”, 如果输入“a空格b空格c”, 则c1=’a’, c2=’空格’, c3=’b’, 将产生错误。在连续使用两个及以上scanf函数输入字符数据时最容易出现问题, 有下列程序:

printf ("输入两个整数:") ;scanf ("%d%d", &a, &b) ;

printf ("输入两个字符:") ;scanf ("%c%c", &c1, &c2) ;

运行程序输入“5空格8 HE”, 结果是:a=5, b=8, c1=’n’, c2=’H’, 将产生错误, 出现这种情况的原因是输入的第一个回车表示输入结束, 但该回车被下一个scanf函数的第一个变量c1接收而成为换行符’n’, 而字符’H’赋给了变量c2, 输入的字符’E’未被任何变量接收。解决此问题的办法是在第二个scanf函数的格式控制部分第一个“%c”前加一个空格, 这样在输入时第一个回车就不会被变量c1接收了, 问题得到解决。

2.1.2 getchar函数

getchar函数的作用是从终端 (通常是键盘) 输入一个字符, 其函数值就是从键盘输入的字符, 可将函数值赋给字符变量, 如:char c1;c1=getchar () ;程序运行到getchar函数时, 等待用户从键盘输入字符, 在键盘上输入“a”, 则c1=’a’。若是两个变量输入, 程序如下:char c1, c2;c1=getchar () ;c2=getchar () ;想得到c 1=’a’, c 2=’b’, 程序运行后输入‘a‘后输入就会结束, 第二个字符’b‘无法输入, 而此时c1=’a’, c2=’n’。正确的输入方法是在键盘上输入“ab”, 此时c1=’a’, c2=’b’。由此可以得出, 在使用getchar进行字符输入时, 按回车键表示输入结束, 但同时按回车键也产生一个转义字符’n’, 这个字符会被后面的getchar函数接收, 因此利用连续多个getchar () 函数给多个字符变量赋值时应注意只在最后一个字符后面按回车键, 其它字符连续输入, 字符间不要添加任何符号, 否则会产生错误。

2.1.3 gets () 函数

gets () 函数的作用是从终端输入一个字符串到字符数组中。如:char str1[13];gets (str) ;从键盘输入“How are you?”, 则数组str1的值为字符串“How are you?”。输入时以回车表示输入结束, 这与scanf函数一致, 但需要注意的是利用gets函数输入字符串时, 输入结束时所按的回车键会被转化为字符串结束标志’�’, 而利用scanf函数输入字符串时回车不会被转化为’�’。

2.2 字符数据的输出

2.2.1 printf () 函数

printf () 函数的作用是输出若干个任意类型的数据, 对不同类型的数据用不同的格式字符。d格式符以十进制整数形式输出、x格式符以十六进制数形式输出整数、c格式符以单个字符形式输出、s格式符以字符串形式输出、f格式符以小数形式输出实数。printf () 函数输出时还可以在符号前面以m.n的形式控制数据显示的列数和精度。

2.2.2 putchar () 函数

putchar () 函数的作用是向终端输出一个字符, 字符内容可以是单字符常量、字符变量、ASCII码和转义字符。如:putchar (‘h’) 、putchar (c1) 、putchar (65) 、putchar (‘n’) 将分别输出单字符h、字符变量c1、字符A和换行符。

2.2.3 puts () 函数

p u t s函数的作用是将一个字符串 (以’�’结束的字符序列) 输出到终端, 在输出时将字符串结束标志’�’转换成’n’, 即输出完字符串后换行, 而用printf函数的“%s”格式输出字符串时不会将字符串结束标志’�’转换成’n’, 如果需要换行必须书写语句printf (“n”) 来实现。

3 结束语

在C语言程序设计中数据的输入与输出是最为常用的操作, 而字符数据因其自身的特点在输入输出方面又具有一定的特殊性, 一般情况下, scanf () 和printf () 、getchar () 和putchar () 、gets () 和puts () 配对使用, 在学习过程中必须多实践, 多练习, 在实际编程过程中掌握有关字符数据输入与输出的方法, 进而提高编程能力, 掌握C语言程序设计的技巧。

摘要:随着单片机技术的飞速发展C语言逐步成为单片机编程的重要语言, C语言程序设计课程不仅是高校计算机专业必修课, 也成为电子相关专业的一门重要的专业基础课程, 在学习过程中C语言字符数据的输入与输出是教学的难点与重点之一, 也是学生容易出错的知识点。通过教学实例重点分析C语言字符数据输入与输出易出错原因, 提出解决办法, 使教学更具针对性, 有效提高课堂教学质量。

关键词:单片机,C语言,字符数据,输入,输出

参考文献

[1]谭浩强.C程序设计试题汇编[M].北京:清华大学出版社, 1998.

[2]葛素娟, 胡建宏.C语言程序设计教程[M].北京:机械工业出版社, 2013:41-47.

篇4:字符串输出格式

关键词:EMTP;ATP;文件系统;输入文件;输出文件

中图分类号:TM726 文献标识码:A 文章编号:1006-8937(2016)29-0069-02

1 概 述

电磁暂态计算程序(Electro-Megnetic Transient Program, EMTP)最初由美国帮纳维尔电力局(BPA)的Dommel博士和Mayer博士开发,在电磁暂态计算领域获得了很大成功。尔后,在最初的EMTP程序的基础上,又衍生出了一些不同的分支,常见的有PSCAD,EMTP-RV,EMTP-ATP等。其中,EMTP-ATP是免费的分支,国内常简称为ATP。

与EMTP一样,ATP算法的基础是贝杰龙(Bergeron)模型。其基本思想是把复杂的设备、元器件(例如变压器、线路等)等效为最基本的电源、电阻、电容、电感、传输线和开关元件,而该模型的核心就是把电容、电感和传输线等效成电阻和历史电流源的网络,历史电流源的取值由上一个仿真步长中的电流决定。由此可以把电路化成电源、开关和电阻的网络,方便求解。最终电阻网络的求解是用节点电压法。

除了以上基本元件类型以外,ATP还提供了功能更为强大的TACs模块和MODELs模块,能够实现高级用户对元器件自定义的需求,因此ATP对复杂问题的处理能力是很强大的。除此以外,对于电力系统中的一些设备,如电机、变压器、线路等,都有现成的模型,还往往提供多个模型供不同需求的用户选择,因此对普通用户而言,ATP也具有使用简单,容易上手的优点。

有时候用户需要自行编写或是修改ATP的输入文件,更常见的是读、处理输出文件。因此本文简要介绍了ATP输入文件的格式,详细介绍了输出文件的格式。希望对ATP用户能够有一些帮助。

2 ATP的文件系统

ATP用户常见的ATPDraw操作界面,如图1所示。

实际上,ATPDraw只是挪威的H?idalen博士所开发的用户界面,用于电路图的绘制并生成标准的ATP输入文件,并不包含ATP程序本身。ATP主程序一般是一个名为TpbigG(W/S).exe的可执行文件,其语法为:

RUNTPG

其中,RUNTPG可以为用户自行定义的环境变量,指向Tpbig文件,也可以是Tpbig文件本身。

可以为BOTH或DISK,指明输出结果是同时输出于硬盘文件和对话窗口,或者仅输出于硬盘文件。是输入文件的文件名,一般扩展名为.atp。

是输出文件的文件名,如果为S,则与输入文件的文件名相同,输出文件的扩展名为.pl4,如没有指定目录,则与Tpbig文件目录相同。

TpbigG.exe BOTH DC4_1.S-R

意为在硬盘上写输出文件,并在屏幕上显示输出结果,输入文件为DC4_1.atp,输出文件为DC4_1.pl4,如果存在同名输出文件,则直接覆盖而不提示。

除了Tpbig文件以外,ATP目录下还有两个较重要的文件STARTUP和LISTSIZE,前者保存一些仿真所用到的常数变量如迭代精度等,后者保存了一些节点、支路数量上限等程序限制。

3 输入文件格式

输入文件是一个纯文本文件。文件中的每一行称为一个卡片,卡片这名称源于老式计算机的输入方式,一个卡片最多可以填写80个字符。其中,类似BEGIN NEW DATA CASE的大写字母语句的卡片是一些指令,其格式和内容都是固定的。大写字母C打头的为注释。/打头的是标识符,一些未用到的可以不写,但是其前后顺序是固定的。其他卡片都是仿真参数和电路参数。

紧接着BEGIN NEW DATA CASE卡片的是仿真参数,其中dT是时间步长,Tmax是仿真时长,其下面一行第一个是Print Freq.,其作用下面会有说明。/BRANCH部分是支路卡片,n1、n2是两端节点名称,R、L、C是电阻、电容、电感值,A、B是传输线的两个参数,leng是传输线的长度。/SWITCH部分是开关卡片,n1、n2同样是两端节点名称,Tclose和Top是开关的合、分时刻,Ie是截止电流。/SWITCH部分是电源卡片,由于ATP里面任何电源都是接地的,因此没有n2参数,Ferq是电源频率,Phase是初相角。/SWITCH部分是输出量。

ATP用户可能会遇到一情况,即需要对电路中一个参数进行反复的调整,如果次数较大,人工操作就比较费力。此时可以用外部程序修改该.atp文件,并调用Tpbig文件求解,然后读取输出文件。由于ATP使用FORTRAN编写,当修改该参数时,如是整数需要在后面加小数点,如是科学计数法,小数位不能超过2位,用大写E,比如1.5E5。

4 输出文件格式

ATP的输出文件,即.pl4文件的格式,如图2所示。

开头的部分以文本形式存储了仿真的的时间,紧接着的4个字节是电路的节点数,再紧接的三个四字节分别存储了输出电压的数量、输出电流的数量、以及TACs数。紧接的四个字节没有用处,再紧接的四个字节非常重要,它指出了数据区的开始位置。以上内容的字节长度都是固定不变的,除了文本格式的时间外,都是以32位整数的格式存储。

在下面是一些说明文字和输出电压、电流的命名信息。

首先是各个节点的名称,然后是每个输出电压对应的两个节点的编号,最后是每个输出电流对应的两个节点的编号。例如图中电流的编号为04、03,表示该电流是从上面所记录节点的第4个节点流出,流入第3个节点。

接下来是数据区,所有数据都是采用32位浮点数存储。从0时刻起,顺序为时间、各个输出电压、各个输出电流,然后是下一个时刻的各个值。即是说,如果输出电压为m个,输出电流为n个,那么最前面的1+m+n个数据即为0时刻对应的时间、各电压数据、各电流数据,紧接着的1+m+n个数据为第一个时间步长的数据,以此类推。

值得指出的是,ATP的输出中,除了数据文件.pl4文件以外,比较重要的还有日志文件即.lis文件,与输出文件名相同。该文件包含的信息可能对用户有用。文件内容包括LISTSIZE文件中的各个变量上限、.atp文件主要内容和其解析、各个节点间的连接情况、计算结果的概要(即每隔Print Freq.个时间步长记录一组数据)、节点流过的功率数据、输出数据的最大值和最小值等信息。如果运行出错,还会给出出错信息。不同版本的ATP,因为默认设置不同,该文件的内容可能不尽相同。

5 结 语

本文简要介绍了ATP的文件系统、输入文件和输出文件的格式,希望能够给ATP用户一些启发。

参考文献:

[1] 解广润.电力系统过电压[M].北京:水利电力出版社,1985.

[2] Dommel H.W. EMTP Theory Book[M].1986.

[3] CEUG. Alternative Transients Program (ATP) Rule book[M]. 1995.

篇5:python 字符串格式化代码

-06-06python网络编程学习笔记(10):webpy框架

-01-01Python Mysql数据库操作 Perl操作Mysql数据库

2014-03-03pyqt4教程之widget使用示例分享

2013-03-03使用python提取html文件中的特定数据的实现代码

-09-09Python字符遍历的艺术

2013-03-03python dict remove数组删除(del,pop)

2013-11-11python翻译软件实现代码(使用google api完成)

2009-09-09python encode和decode的妙用

篇6:C语言格式字符

c 输出单个字符

d 以十进制形式输出带符号整数(正数不输出符号)

e 以指数形式输出单、双精度实数

E 以指数形式输出单、双精度实数

f 以小数形式输出单、双精度实数

g 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大 于等于精度时使用

G 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用

i 有符号十进制整数(与%d相同)

o 以八进制形式输出无符号整数(不输出前缀O)

p 指针

s 输出字符串

x 以十六进制形式输出无符号整数(不输出前缀OX)

X 以十六进制形式输出无符号整数(不输出前缀OX)

上一篇:国庆节的作文:国庆佳节下一篇:2022年中考高分作文技巧及优美句子必背

本站热搜