第一篇:C语言中的输入输出函数总结
putchar():把变量中的一个字符常量输出到显示器屏幕上;getchar();从键盘上输入一个字符常量,此常量就是该函数的值;printf();把键盘中的各类数据,加以格式控制输出到显示器屏幕上;scanf();从键盘上输入各类数据,并存放到程序变量中;puts():把数组变量中的一个字符串常量输出到显示器屏幕上;gets():从键盘上输入一个字符串常量并放到程序的数组中.sscanf();从一个字符串中提取各类数据。putchar()输出一个字符
getchar()输入流中获取一个字符 例如:
char c = getchar();putchar(c);格式化输入输出scanf()和printf()是最有用的,所以重点讲一下。printf(): 一般形式: printf(“格式控制”.输出列表);eg : printf(“a=%d,b=%f,c=%cn”,a,b,c);1;格式控制.格式控制是用双引号括起来的字符串,也称“转换控制字符串”,它包含以下两部分信息.格式说明:由“%”和格式字符组成,如%d,%f,%c,他的作用是把输出数据转换为指定格式输出,格式的说明总是由“%”字符开始的.普通字符:需要原样输出的字符,或者是一些有特殊含义的字符,如n,t。2;输出列表
就是需要输出的一些数据,也可以是表达式,如果在函数中需要输出多个变量或表达式,则要用逗号隔开.一些特殊字符的输出:
单引号,双引号,和反斜杠的输出在前面加转义字符”” 如:”’” , “”” , “”
%的输出用两个连在一起的%%,即printf(“%%”);
常用的格式说明如下: 格式字符
d 以十进制形式输出带符号整数(正数不输出符号)o 以八进制形式输出无符号整数(不输出前缀O)x 以十六进制形式输出无符号整数(不输出前缀OX)u 以十进制形式输出无符号整数 f 以小数形式输出单精度实数 lf 以小数形式输出双精度实数
e 以指数形式输出单、双精度实数
g 以%f%e中较短的输出宽度输出单、双精度实数 c 输出单个字符 s 输出字符串
这里强调一下:网上很多文章都说f 和lf是一样的,即不管单精度,双精度浮点数,都可以用f, 但我在POJ上做过测试,输出Double时用f确实也可以,但读入时,用f就报WA,所以大家如果对Double进行读写的话,都用lf吧。
说到Double,再啰嗦一句,建议大家要用到浮点数时都用Double,不要用float,因为在很多情况下,float精度不够会导致WA。
特殊:
对64位整数的输入输出,在POJ上的C++环境下(即VC),64位整数是: __int64(注意int前面是两个下划线)输入输出格式为”%I64d”.在G++环境下(即Dev C++)64位整数是 long long 输入输出格式为”%lld”.输出宽度
用十进制整数来表示输出的最少位数。注意若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。
精度
精度格式符以“.”开头,后跟十进制整数。意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。
标志格式字符
-结果左对齐,右边填空格
+ 输出符号(正号或负号)空格输出值为正时冠以空格,为负时冠以负号 例如:
double c=24212345.24232;printf(“%020.4”);表示输出精确到小数点后4位,输出占20位,若有空余的位补0.scanf:
scanf的很多用法都是和printf对应的,故不再赘述。
说一下scanf一个特别好用的地方,就是可以滤去一些不想要的东西。举例说明如下:
比如输入为日期 yyyy-mm-dd,就可以这样写: int year,moth,day;scanf(“%d-%d-%d”,&year,&moth,&day);再比如:
scanf(“%3d %*3d %2d”,&m,&n);输入113 118 69回车(系统将113赋予m,将69赋予n,因为*号表示跳过它相应的数据所以118不赋予任何变量)puts()用的不多,且基本都能用printf()代替,故不再多说。gets()是从输入流中获取一行字符串放入字符数组中: char in[100];gets(in);大家可能最容易出错的地方就是字符串的输入,所以强调一下: 能进行字符,字符串输入的有:
getchar(), scanf(“%c”);scanf(“%s”), gets()
其中getchar()和 scanf(“%c”)的功能是一样的。
需要注意的是,这两个函数读入的是输入流中当前位置的字符,比如:
scanf(“%d”,&n);c = getchar();假设输入 67/(假设“/”代表回车),则第一个scanf读入一个整数67后,当前输入流的位置是67之后,即指向回车符,所以第二个getchar()读入的就是一个回车符了,即 c = ‘n’。
同样,gets()也是从当前位置读入一行字符串。比如:
scanf(“%d”,&n);gets(str);此时读入字符数组中的字符串就是“n” 了
所以通常在用scanf读入一个非字符串的类型之后,如果要读入字符,或字符数组,都用一个额外的getchar()把回车符读掉,若后面跟的不止一个回车符,可能还有多余的空格的话,就用gets()读掉。
和以上不同的是,scanf(“%s”)读入的时候是会忽略掉空格,回车和制表符的。并且以空格,回车和制表符作为字符串结束的标志。
经常会有这样的题,输入第一行是一个整数,接下来每行的第一个是一个字符,用来表示某种操作,后面再跟一些数据,比如: 4 A 100 2 B 23 A 23 89 B 34
像这种输入就需要小心,读入字符时不要读成回车符。为了防止意外,我一般是这样处理这类输入的: char model[2];Scanf(“%d”,&n);for(„,„,„){
scanf(“%s”,model);
if(model[0] == ‘A’){ } else{ } } sscanf(): sscanf()经常用来分解字符串,功能非常强大,但很多功能都需要正则表达式的知识,所以就介绍一下最简单的几种用法,大家如果想了解更多的话,自己去网上找吧。1.char str[100],str1[100],str2[100];gets(str);sscanf(str,”%s%s”,str1,str2);
将读入的一整行字符串按空格,制表符或回车符分割成两个字符串。2 取指定长度的字符串。如在下例中,取最大长度为4字节的字符串。
sscanf(“123456 ”, “%4s”, str);
对于C++的输入输出就不再详细的讲了,因为cin,cout的速度实在太慢,不推荐使用,我一般都是到万不得已时才用。
比如当你要读入字符串到string 对象中时,就只能用cin了,这时候还有一个常见的问题,就是如何将一整行字符串读入一个string 中,这就要用到getline函数了。用法为: getline(cin, str);第一个参数就是标准输入流cin,第二个参数是接收读入数据的string对象,本来还有第三个参数,是结束符的标志,但通常用它默认的就可以了,所以不用管。
注意区分这个getline和cin.getline的区别: cin.getline的用法如下: char str[20];cin.getline(str,20);表示从读入的一行字符串中,取最多20各字符放入字符数组str中,注意此处的str是字符数组,而上面的str是string对象。
另外需要注意的是,千万不要把cout和printf混用,因为cout是带缓冲的而printf不带,所以会使得输出的数据顺序混乱。
第二篇:对于C语言中的scanf函数的使用问题总结
Scanf函数总结
对于C语言中的scanf函数的小结
对于scanf函数的作用大家应该都知道吧。在任何一本C语言的教材中都有过介绍,它的一般形式是(格式控制,地址表列)
我今天想说说使用这个scanf函数的时候,应该注意哪些问题吧。
1.scanf函数中的格式控制应该是变量名的地址,而不是变量名,例如a和b为整形变量,如果写成scanf(“%d%d”,a,b);就会出错的,应该将这个,a,b改成&a,&b;(表示地址)2我们都知道C语言中的字符串是存放到字符数组中的,如果我们定义了一个字符数组,如char a[20];我们想把字符串输入到这个字符数组中通常有两种方式,第一种.逐个字符输入,采用for循环的形式。第二种,直接输入字符串的形式,用格式控制符%s.第一种我们这样输入,for(i=0;i<=19;i++){ } 第二种我们用这种方式输入 Scanf(“%s”,a);注意第二种这种形式,我们没有加&,这是为什么呢,这是 Scanf(“%c”,&a[i]);
Scanf函数总结
因为,C语言中把这个数组名当做该数组的起始地址。但是这种数组仅限于字符数组,不要企图,利用数值型数组的名。来整体输入,一个数值型的数组,这就是大错误了,比如这样写是不正确的 Int a[10];Scanf(“%d”,a);数值型数组的输入只能采用上面的第一种方法。3对于指针问题,大家需要注意一点,指针就是地址,这是在任何条件下都成立的,(请允许我极端一点),比方看下面的例子。Char *p;Char a[20];P=a;For(i=0;i<20;i++,p++){ } 这是一个采用指针变量输入数据的例子,这里的指针变量p在for循环之前就指向了这个数组a,也就是指向了数组的首元素,也就是是说指针变量p里存放的是,数组首元素的地址,所以在用这个scanf函数进行输出时,指针变量的前方就不用再加取地址符号了。Scanf(“%c”,p);
Scanf函数总结
4.这个问题是整个scanf函数使用过程中最容易出错的一个地方。就是关于用scanf函数在用“%c”格式声明输入字符的时候,是最容易出错的一个地方。一点一点进行,下面请看一个简单的例子: 看下面的一个程序,(1)
#include
} 我们想要输入三个整数,输入的时候我们要注意了,这里的scanf函数中的格式控制是三个连续的%d,除了格式声明以外中间没有任何其他的字符,这个时候我们输入数据应该加入空格,否则执行不了。1 2 3(1,2之间有空格,2,3之间有空格,(具体原因会在例题2中阐明)加入其他符号也是不可以的)
(2)经过第一道的例题,似乎让我明白了这样的一个规律,如果中间都是除了格式声明以外中间没有任何其他的字符,int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d%d%dn”,a,b,c);return 0;
Scanf函数总结
那我就可以用空格,来隔开我的数据了。看看下面的例题 #include
} 我的输入还是仿照上面,进行截图如下所示 char a,b,c;scanf(“%c%c%c”,&a,&b,&c);printf(“%c%c%cn”,a,b,c);return 0;
我们发现输出并不是我们想象的那样,而是出现了错误,下面我们来解释一下原因,因为我们原来输入的位数值型的数据,所以我们要区分数值的个数,以及位数,比方我想输入
Scanf函数总结 234 456这三个数,我要是连续的把这8个数输入进去,计算机也无法区分,这到底是几个数,所以我们用空格加以区分,这样计算机遇到空格就知道这个数值型的数已经输入完毕了(这是例题1中我们为什么加空格的原因),但是为什么在例题2中我还是这样做,就不可以了呢,这是因为我们现在输入的是字符型数据,而且字符型数据不是像数值型数据那样,有几位数字,字符型的数据只有一位,所以你输入一位数据他就给一个变量,所以不需要像数值型的数据那样隔开了,所以我们直接输入三个连续的字母asd就可以了,就不用空格分开了,如果我们输入a空格s空格d,那么他就会默认的把前三个字符送给三个变量了,也就是a空格s(因为空格也是一个字符)。(3)下面大家看一下这道例题。
//下面程序很简单,就是输入两个数和一个运算符号,#include“stdio.h” void main(){
int;float z,x,y;char cc;printf(“please enter date:n”);scanf(“%f%c%f”,&x,&cc,&y);
Scanf函数总结
} if(cc=='+')z=x+y;if(cc=='-')z=x-y;if(cc=='*')z=x*y;if(cc=='/')z=x/y;printf(“%fn”,z);我们连续输入三个1+2 结果输出3,截图如下
这里要注意的是,输入1之后不能有空格,因为下面是一个字符型数据,输入字符型数据之后,就可以有空格了,因为
Scanf函数总结
后面是一个数值型数据。(所以按照这种方式输入也可以 1+ 2)(4),如果在“格式控制字符串中”除了格式声明还有其它字符,则在输入数据的时候,在对应的位置上应该输入与这些字符相同的字符。#include
} 我们在输入数据的时候应该这样输入,1,2,3 我要讲的内容就要讲完了,下面和大家说说在输入这个数据的时候,尽量加入,分隔,scanf(“%d,%d,%d”,&a,&b,&c);这样不容易出错,如果什么符号也不用直接这样的话scanf(“%d%d%d”,&a,&b,&c);大家一定要注意我上面说的三个例子。int a,b,c;scanf(“%d,%d,%d”,&a,&b,&c);printf(“%d%d%dn”,a,b,c);return 0;7
第三篇:c语言中可变参数函数设计方案
c语言中可变参数函数的设计
c语言中可变参数函数的设计
c语言中可变参数函数的设计
-----最近想好好学学这个, 先把网上搜集得资料贴上.========================
参数可变函数的实现(上)CSDN Blog推出文章指数概念,文章指数是对Blog文章综合评分后推算出的,综合评分项分别是该文章的点击量,回复次数,被网摘收录数量,文章长度和文章类型;满分100,每月更新一次。
此文献给如我一般还在探索C语言之路的朋友们。
注:本文中测试程序的编译环境为win2000和VC6.0 缘起:
作为一个程序员,我没有写过参数可变的函数,我相信大部分朋友也没有涉及过,或者我的境界层次太低了。那么缘何我要去揭这一层面纱呢?因为好奇!
我是个思维具有极大惰性的人,曾经识得参数可变函数,也懒得去深究,但是它的三点(函数声明时参数列表中的“…”)却深刻的映入/ 20 了我的记忆里,而且是带着若干个闪耀的问号。可是就在昨天,在拜读某君的高论时,它再一次出现了。我的资质真的是不太够,因为某君在谈到它时只是给出了
破题:
但凡所谓“实现”都是从没有到有的过程,但是我只是想去解惑它的实现,因为它原本就是好端端的正为成千上万的程序员们服务。
还是从我们熟悉的printf说起:
如果你是个C语言的程序员,无论你是初学者还是高高手,对于printf都不会陌生,甚至你已经用了无数次了。我已经说过我是个有极大惰性的人,所以每次用printf都是照本宣科,规规矩矩的按教科书上说的做,从来没有问过一个为什么,这就是所谓的“熟视无睹”吧。
其实,printf函数是一个典型的参数可变的函数。在保证它的第一个参数是字符串的条件下,你可以输任意数量任意合法类型的参数。只要你在第一个字符串参数中使用了对应的格式化字符串,你就可以输出正确的值。这难道不是件很有趣的事吗?那它是怎么做到的?
1,首先,怎么得到参数的值。对于一般的函数,我们可以通过参数对应在参数列表里的标识符来得到。但是参数可变函数那些可变的参数是没有参数标识符的,它只有“…”,所以通过标识符来得到是不可能的,我们只有另辟途径。/ 20
我们知道函数调用时都会分配栈空间,而函数调用机制中的栈结构如下图所示:
|......|
------------------
| 参数2 |
------------------
| 参数1 |
------------------
| 返回地址 |
------------------
|调用函数运行状态|
------------------
可见,参数是连续存储在栈里面的,那么也就是说,我们只要得到可变参数的前一个参数的地址,就可以通过指针访问到那些可变参数。但是怎么样得到可变参数的前一个参数的地址呢?不知道你注意到没有,参数可变函数在可变参数之前必有一个参数是固定的,并使用标识符,而且通常被声明为char*类型,printf函数也不例外。这样的话,我们就可以通过这个参数对应的标识符来得到地址,从而访问其他参数变得可能。我们可以写一个测试程序来试一下: / 20
#include
void va_test(char* fmt,...);//参数可变的函数声明
void main(){
int a=1,c=55;
char b='b';
va_test(“",a,b,c);//用四个参数做测试
}
void va_test(char* fmt,...)//参数可变的函数定义,注意第一个参数为char* fmt {
char *p=NULL;/ 20
p=(char *)&fmt;//注意不是指向fmt,而是指向&fmt,并且强制转化为char *,以便一个一个字节访问
for(int i = 0;i<16;i++)//16是通过计算的值(参数个数*4个字节),只是为了测试,暂且将就一下
{
printf(”%.4d “,*p);//输出p指针指向地址的值
p++;} }
编译运行的结果为
0056 0000 0066 0000 | 0001 0000 0000 0000 | 0098 0000 0000 0000 | 0055 0000 0000 0000
由运行结果可见,通过这样方式可以逐一获得可变参数的值。
至于为什么通常被声明为char*类型,我们慢慢看来。
2,怎样确定参数类型和数量 / 20
通过上述的方式,我们首先解决了取得可变参数值的问题,但是对于一个参数,值很重要,其类型同样举足轻重,而对于一个函数来讲参数个数也非常重要,否则就会产生了一系列的麻烦来。通过访问存储参数的栈空间,我们并不能得到关于类型的任何信息和参数个数的任何信息。我想你应该想到了——使用char *参数。Printf函数就是这样实现的,它把后面的可变参数类型都放到了char *指向的字符数组里,并通过%来标识以便与其它的字符相区别,从而确定了参数类型也确定了参数个数。其实,用何种方式来到达这样的效果取决于函数的实现。比如说,定义一个函数,预知它的可变参数类型都是int,那么固定参数完全可以用int类型来替换char*类型,因为只要得到参数个数就可以了。
3,言归正传
我想到了这里,大概的轮廓已经呈现出来了。本来想就此作罢的(我的惰性使然),但是一想到如果不具实用性便可能是一堆废物,枉费我打了这么些字,决定还是继续下去。
我是比较抵制用那些不明所以的宏定义的,所以在上面的阐述里一点都没有涉及定义在
好了,我们来看一下那些宏定义。
打开
1)typedef char * va_list;
2)#define _INTSIZEOF(n)((sizeof(n)+ sizeof(int)1))
3)#define va_start(ap,v)(ap =(va_list)&v + _INTSIZEOF(v))
4)#define va_arg(ap,t)(*(t *)((ap += _INTSIZEOF(t))sizeof(type)))
其中,argp的类型是char *。
如果你想用va_arg从可变参数列表中提取出函数指针类型的参数,例如
int(*)(),则va_arg(argp, int(*)())被扩展为:
(*(int(*)()*)(((argp)+= sizeof(int(*)()))-sizeof(int(*)())))
显然,(int(*)()*)是无意义的。
解决这个问题的办法是将函数指针用typedef定义成一个独立的数据类型,例如:
typedef int(*funcptr)(); / 20
这时候再调用va_arg(argp, funcptr)将被扩展为:
(*(funcptr *)(((argp)+= sizeof(funcptr))-sizeof(funcptr)))
这样就可以通过编译检查了。
问题:可变长参数的获取
有这样一个具有可变长参数的函数,其中有下列代码用来获取类型为float的实参:
va_arg(argp, float);
这样做可以吗?
答案与分析:
不可以。在可变长参数中,应用的是”加宽“原则。也就是float类型被扩展成double;char, short被扩展成int。因此,如果你要去可变长参数列表中原来为float类型的参数,需要用va_arg(argp, double)。对char和short类型的则用va_arg(argp, int)。
问题:定义可变长参数的一个限制
为什么我的编译器不允许我定义如下的函数,也就是可变长参数,但是没有任何的固定参数?
int f(...)
{ / 20
...}
答案与分析:
不可以。这是ANSI C 所要求的,你至少得定义一个固定参数。
这个参数将被传递给va_start(),然后用va_arg()和va_end()来确定所有实际调用时可变长参数的类型和值。
第一篇
C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为:
int printf(const char* format,...);
它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“…”做参数占位符),实际调用时可以有以下的形式:
printf(”%d“,i);printf(”%s“,s);printf(”the number is %d ,string is:%s“, i, s);
一个简单的可变参数的C函数
先看例子程序。该函数至少有一个整数参数,其后占位符…,表示后面参数的个数不定。在这个例子里,所有的输入参数必须都是整/ 20 数,函数的功能只是打印所有参数的值。函数代码如下:
//示例代码1:可变参数函数的使用 #include ”stdio.h“ #include ”stdarg.h“ void simple_va_fun(int start,...){ va_list arg_ptr;int nArgValue =start;int nArgCout=”0“;//可变参数的数目
va_start(arg_ptr,start);//以固定参数的地址为起点确定变参的内存起始地址。do { ++nArgCout;printf(”the %d th arg: %d",nArgCout,nArgValue);//输出各参数的值
nArgValue = va_arg(arg_ptr,int);//得到下一个可变参数的值
} while(nArgValue!=-1);return;} int main(int argc, char* argv[]){ simple_va_fun(100,-1);simple_va_fun(100,200,-1);return 0;}
下面解释一下这些代码。从这个函数的实现可以看到,我们使用可变参数应该有以下步骤: / 20
⑴由于在程序中将用到以下这些宏: void va_start(va_list arg_ptr, prev_param);type va_arg(va_list arg_ptr, type);void va_end(va_list arg_ptr);va / 20
第四篇:C语言中union应用总结
C语言中union应用总结
定义共用体的类型变量的一般形式为: union 共用体名 {
成员列表; }变量列表; 例如: union data {
int i;
unsigned char c[4];
float f;};union data a;//定义union类型的变量
共用体变量a中的成员i、c、f三个变量在内存中从同一个地址开始存储,即在同一个内存中可以用来存放几种不同类型的数据;共用体变量a所占内存的长度等于最长成员的长度,这里c[4]和f的长度都为4字节。例如进行如下赋值: a.i = 100;a.f = 100.5;那么此时共用体变量a中的成员i已经没有值了,因为存储该值的内存现在已经被用来存储成员f的值了。共用体成员间是共享内存的,对共用体的一个成员赋值,其他成员的值跟着发生变化。利用共用体成员间是共享内存的这一特性,有以下几种应用:
1、在需要将浮点数据转移时,使用共同体,按4个字节的char型数据传输,带来通信效率的提高。一般浮点数发送方法:是将浮点数放大一定的倍数,再取整,再按整数的高低位传输。还需要传输这个放大的倍数,如果浮点数是个负数的话,还要将符号位一并发送。接收方收到这几条报文后,才能将数据还原。但是接收方还原的浮点数据与发送方发送的浮点数不一样,因为小数位数发生变化。使用共同体就不会出现这个问题了,在 接收方,使用共同体,将收到到的4个char数据赋值给a.c数组,a.f就是还原的数据,这个数据和发送的数据是一样的,也不管发送的浮点数是正还是负。如有a.f =-12.34;则a.c[0] = 0xa4, a.c[1] = 0x70, a.c[2] = 0x45, a.c[3] = 0xc1。如有a.c[0] = 0xa4, a.c[1] = 0x70, a.c[2] = 0x45, a.c[3] = 0xc1,则a.f =-12.34。使用这种方式传输浮点数,数据是不会丢失的,报文也更简单。
2、将浮点数保存到文件中时,保存为4个字节的char型数据,节约空间。如果保存为文本需要占用的字节数等于数值的字符的个数,有可能占用1~20字节,而用共用体的char型数据,占用的空间大小固定为4字节,对大量浮点数据的存储,节约的空间更多,分析保存的浮点数也是很方便的。
3、用在强制类型转换上。如将int数据转为float,可以这样使用union: a.i =1234;赋值后,a.f就是转换后的值等于1234。
第五篇:新闻语言中的白描
新闻语言中的白描
(2009-10-30 18:48:18)转载
标签: 分类: 理论探究
新闻写作培训 白描 杂谈
白描是中国绘画的一种传统技法,线条简练而传神逼真,不用颜色渲染。应用到新闻写作上就是,少修饰,少用或不用形容词修饰,简练而直接的勾勒出事物的特征。白描说白了就是直接叙述。
如何白描?一是多用动词,少用形容词。大家要注意,这是新闻写作必须恪守的一个准则。一个句子至少应有一个实体动词,而这个动词,应该是句子中最重要的词。多用动词,能把人物和事件写活,使人如见其人,如闻其声,就好像站在纸上。看例子:
(十九)我三十万大军胜利南渡长江
新华社长江前线一九四九年二十二日二时电
英勇的人民解放军二十一日已有大约三十万人渡过长江。渡江战争于二十日午夜开始,地点在芜湖、安庆之间。国民党反动派经营了三个半月的长江防线,退着人民解放军好似摧枯拉朽,军元斗志,纷纷溃退。长江风平浪静,我军万船齐发,直取对岸,不到二十四小时,三十万人民解放军即已突破敌阵,占领南岸广大地区,现正向繁昌、铜陵、音阳、鲁港诸城进击中。人民解放军正以自己的英雄式的战斗,坚决地执行毛主席朱总司令的命令。
注意动词,象万船齐发……,很洗练的勾勒出了我百万雄师过大江的壮丽场面。多用动词的好处就在于现场气氛浓,极富动感,充满激情。多用动词的同时,注意少用形容词,特别是非常,绝对,很,之类的词,二是要多用子概念,譬如,生活水平——食物——肉类——鱼肉——鲍鱼,后一个是相对于前一个的子概念,多用子概念可以使事物形象具体而丰富。比如气温高达38度与天气很热,掌声持续达10分钟之久与受到热烈欢迎,前者明显更准确传神。说某人紧张时,不要直接写他很紧张,而这么说:在一次40分钟的飞行中间,他嚼了21根口香糖,他洗了一副牌,数了数,又洗了一遍。他看了看头上和脚下的云彩,系紧安全带,又把它松开了。‛感觉一下,效果是不是完全不同,是不是更生动,更鲜活。
消息写作 所谓消息,一个最明显的标志就是消息头,大家看报纸时都会看到‚本报讯‛三个字,咱们平时用的最多的就是消息。
消息分为导语,主体,结尾三部分。咱们依次聊一聊。
新闻界有这样的说法,导语是新闻的生命,写好导语等于写好消息。导语位于文章开头部位,通常是第一段,别的文章的高潮一般在主体部分,而导语是新闻的精华,要点,要包含新闻文章中最重要的部分,你最想让读者知道的,也是读者最需要知道的东西。他的作用在于一,开门见山,尽快的传递最新信息,使人看一眼就知道你这篇文章的大要。二,吸引读者,使人一见钟情,因此,通常导语要求写的非常精彩,能吊起读者胃口,激发读者读下去的兴趣。看例子,(二十)[德新社伦敦(2000年)12月31B刨
今天公布的令人震惊的新统计数据显示,烟民每吸一支姻就减寿11分钟。
[路透社华盛领(1998年)12月17日电I
研究者们今天说,入睡的鸟儿不仅会做梦,而且宅们梦到的事情可能就是白天唱过的歌儿。
感觉一下,是不是一下就会被它吸引,想一口气读下去。
第三,导语为全篇定音,导语写好后,消息的主体部分如何展开,材料如何取舍,笔墨的轻重都应以此为准。例子,(二十一)[路透社华盛顿(1996年)4月11日电]
美国出版的《古尼斯世界纪录大全》一开头就有一句短短的告诫语:‚一切想创造纪录的人都得自己冒很大的风险。‛
看了这样的导语,下面怎么写就很清楚了。下面大家再看一个例子:(二十二)本报讯
张友渔微笑着望着大家——一位参加昨天张友渔宪法学学术思想研讨会的同志说,这张遗像‚照出了张老的特点:亲切、平易近人‛。
照片无法反映出的是他的思想,而这正是昨天召开的这次研讨会的内容。与会者都是首都宪法学界的专家、教授及学者,共80多人。
研讨会上,发言者称赘张友渔的宪法学术思想‚广博而精深,是我国最杰出的宪法学家‛。
张友渔1954年曾参加了我国第一部宪法起草的工作.并为‚制订1982年宪法和一系列重要法律倾注了全部心血‛。
此次研讨会是由京政法管理学院和方法学会宪法研究会联合举办的 大家看一下文章导语,看导语表现主体部分要说的他思想研讨会了么,没有,导语让人一看好像事张的追悼会。这样的话,下面的内容就很难展开。这个例子告诉我们,选定导语的内容,写好导语对记者完成全篇是多么重要。
导语怎么写呢?
第一,导语必须有实质性内容,不能虚晃一枪,空泛无物。所谓实质性内容,即指新闻事实,或者事实中的要点。看下面:
(二十三)本报讯
今天上午9时,副市长张百发又一次来到亚运村安慧里2区18号楼,与前几天不同的是,今天他带来了北京市城建系统几乎所有的局长、总经理。看了这样的导语,大家能得到什么信息呢?可以说没有任何有价值的信息。读者关心的事实根本没有出现。大家再看改写以后的:
(二十四)本报讯
今日上午,在亚运村安慧里2区18号楼前的空地上,副市长张百发当着城建系统几乎所有局长、总经理的面,宣布扣罚本人一个月工资,以示自责。
这样的导语,读者一看就会知道,这儿的楼房质量出现问题了,市长都自罚了,但什么问题呢?会吸引这你读下去。
第二,将最具新闻价值,最有吸引力的事实写进导语。仅有实质性内容还不够,记者必须将新闻事实中的精华挑选出来,写入导语。看一下两个导语的对比:(二十五)本报讯
在昨天市政府常务会议上.市农办主任白有光汇报了京郊北部区严重受灾和抗灾斗争情况。(二十六)本报讯:一场百年不遇的特大暴雨,6日至11日袭击了京郊西部与北部山前迎风坟地区。密云、怀柔两县交界处雨量最大,造成10万民众受灾,22人死亡,6人失踪,被毁农田达数万亩。很明显,后者所写的新闻事实才是最重要的,也是读者最关心的,应该再导语中有所交代。
第三,选用最有趣,最富有戏剧性和人情味的材料写作导语。如前所说,导语的基本目的是吸引读者,能够吸引读者的首先是新闻事实和信息的重要性,影响性。其次便是能够引起读者兴趣的新奇的,有故事性,有人情味的事实。例如,病人为逃避医疗费逃跑,医院发了一则寻人启示,记者灵机一动,把医院的寻人启示直接写成消息导语:
(二十七)本报讯:昨天下午,读者顾健向本报发来紧急传真:史小六,你为了逃避手术费,竟然左臂伤口内带着引流条就失踪了。请你立刻回到中国康复研究中心博爱医院接受紧急治疗,否则,你有感染截肢甚至丧命的危险。
感觉一下,是不是更能吸引人。另外,力求简短,力求优美生动。看例子:
(二十八)[美联社盐湖城(1998年)6月14日电]
在盐湖城犹他爵士队主场,看迈克尔〃乔丹如何投个最后两球,从而以一分优势为公牛队夺取本赛季Nm总冠军,你不得不相信,天才就是天才。
总之,再导语的写作中,只要遵循以上四个原则,你尽可以充分发挥你的聪明才智,奇思妙想。看一个例子:
(二十九)本报讯(实习生李思源
通讯员郭金兰)
真是‚清风破暑连三日,好雨依时抵万金‛。久早的京城终于在‚五一‛节之际迎来了一场‚贵加油‛的透雨。
主体和结尾
主体的作用是第一,补充导语中尚未出现的新闻要素。第二,将导语中高度概括的事实具体化。
主体的写作,最终要的是主体的结构。一般来说,主体,或者说大部分消息都采用的倒金字塔结构。也就是说,越重要的部分越放在前面,重要程度由前到后依次降低,这样作的好处在于不仅便于读者把握重点,也有利于编辑安排版面,如果版面位置不够,编辑只要拿掉最后一块就可以了,还不够,就接着拿,拿了以后,又不影响全篇的完整性。看例子:
(三十)[美联社剑桥(1996年)2月30日电]
微软公司的比尔〃盖茨和他在哈佛大学时期的一个朋友合起来将向这所学校捐款2500万美元,用来建造一座计算机科学大楼。(捐款金额,目的)
该校将在这座大楼里实施它的计算机科学和电机工程计划。直在努力扩大和加强它的计算机科学和电机工程计划。(背景,捐款意义)
盖茨和史蒂夫〃巴尔默联合捐许的消息是昨天晚上宣布的。数额在哈佛大学有史以来收到的捐款中占第五位。(金额排名)
盖茨是美国的首富,据估计,他现在大约拥有148亿美元。巴尔默是盖茨1980年带进微软公司的,他现在负责销售。据报道,他现在拥有37亿美元。(二人拥有财富)
巴尔默和盖茨1973年在哈佛大学时曾同住过一个宿舍。这两个人决定以他们的母亲玛丽〃巴克斯韦尔〃盖获和比阿特丽斯〃德沃金〃巴尔默的名字为这座新的计算机大楼命名。它将叫做马克斯韦尔一德沃金大楼。(二人关系)很显然,从上到下,重要程度依次递减。读者最关心的是捐款数额,目的。而二人的关系最无足轻重。第二,就是纵向结构。就是按照事件发展的先后顺序写。
结尾,消息是以事实结尾,也就是,事实该讲到那里,消息就在那里结尾,戛然而止,无需再加。
注意背景材料
关于背景材料,前面已经讨论过了。,这儿还是有必要强调一下。其作用有第一,说明解释令新闻通俗易懂。
(三十一)本报讯
‚可燃冰‛这个大自然为人类子孙后代备下的丰厚礼品,最近在祖国的南海被发观。
日前,从中国科学院广州能源研究所传末消息说,经初步判定,南海海底有巨大的‚可燃冰‛带,能源总量估计相当于全国石油总量的一半。
‚可燃冰‛外形似冰,能够燃烧,学名叫‚天然气水合物‛。与天然气相比,‚可燃冰‛的优点更为突出。1立方米的‚可燃冰〃’量相当于164立方米的天然气c目前,在全球公认的‚可燃冰‛有煤、天然气、石油总和的两到三倍‘
除了南海以外,在我国的东海也发现了‚可燃冰‛的踪迹。国家已经开始组织力量就全国‚可燃冰‛资源进行勘察。
‚可燃冰‛一般读者不知道是什么东西,这里解释是必要的。第二,运用背景材料揭示事物的意义,唤起社会关注。看例子
(三十二)本报北京6月20日讯(记者李家杰)
在今天召开的‚石经回归‛新闻发布会上,有关方面负责人说、由于技术手段欠缺,长期受大气严重污染,1957年从国家重点文物保护革位北京云居寺出土的佛教石刻经板已‚严重风化‛。为了更好地保存达批重点文物,1999年9月9日将其回归地穴珍藏。——道出了石经的脆弱。
据史载,最早主张把佛经刻在石头上的是北齐南岳天台宗高僧怠思。第一个特此事付诸实施的是他的单子静碗。从门oo多年前的隋代大业年间开刻,历经辽、金、元、明数代千年,无数僧人辛勤劳作,共刻出佛经门22部35x卷、14278块石经。完工后藏于云居寺附近石经山9个藏经洞.和寺内压经塔下的地穴中。
佛学家说,这些石经包容了佛经的经典要著,辽金刻经以《契丹大藏经》为蓝本,可以校正存世佛经的外讹。静琉生前曾留下刻经主旨:
‘‘此经为未来佛法难时拟充经本,世若有经,愿勿钒开。‚但后人未遵循此言。——说明了石经的珍贵,唤起人们的关注。
据北京市文物局局长梅宁华介绍,1957年从云居寺南塔附近出土辽、金时代刊刻石经板共计10082块。置入的展室,实为库房,既不利于向世人展示,又不利于保护。41年来,文物部门与有关专家虽多方设法保护,但至今未能从板本上解决问题。现在,有的石经板字面已脱皮,有的整块下掉,有的表面呈粉末状,有的大面积文字脱落。——石经保护的困难。
专家认为,把这些石经重新放归原埋藏处的压经塔地穴封藏,是目前防止石经风化的最佳方案。
第三,就是借背景材料增加指示性趣味性,使其可读。第四,就是以背景语言加以暗示,表达某种不便言明的思想。
通讯也是一种新闻体裁,所以,他必须满足新闻的我们前述的基本要求和基本写法。另外,通讯有自己的不同于消息的特点,也有它特别的一些写法。特点,一,通讯报道的事实比消息详细,完整,富于情节,可以满足读者欲知详情的需要。二,通讯报道的事实往往比消息更形象,更生动,它以感性的素材还原生活的原生态,使这种文体更具感染力。三,消息多用概括性手法叙述事实,通讯则多用详述和描写手法表现事实。四,与消息相比,通讯的时效性较差。大家可以通过例子区别一下:
消息:(三十三)本报香港7月1日凌晨电
记者徐运平、曹宏亮报道:五星红旗在香港会展中心新翼升起的同一时刻,在港岛中区添马舰威尔士亲王军营,五星红旗也在这里升起。以此为标志.我国CJRf0接管香港防务。
中英双方关于香港防务交接的协议于6月23日达成。依照协议,6月30日晚J0时许,我军78人到达英军驻港总部威尔士亲王军营,随后,举行了简短、庄重的防务交接仪式。晚U时59分55秒,英方最后一名士兵步出军营门。零时零分零秒,在雄壮的国歌声中,我国国旗高高升起在军营前的旗杆顶端与此同时,我驻港部队的14处军营上空都升起了国旗。从此,我人民解放军开始在香港地区执行防务、、据悉,威尔士亲王军营也待是我军驻港部队的司令部。
通讯:(三十四)1997年6月30日21点 香港。添马舰军营(又名威尔斯亲王军营)。
这时,时钟的每一次滴答,都激动着中华儿女的心。
中英双方防务事务交接仪式将在这里举行。这是中国人民解放军最神圣、最自豪的时刻.、22点25分。人民解放军驻香港部队先头部队车队准时抵达添马舰军营。一下车,先头部队官兵和早先进驻的先造部队官兵互相敬礼、握手,稍后立即整装列队。来到主楼北侧,共同迎接这一庄严而神圣的时刻。
23点49分‘j军营出奇地安静b
空空的哨位,空空的旗杆,在场的200名各国记者和驻香港部队官兵一道,都在等待一个时刻的到来。这一刻,待结束中华民族百年耻辱的历史.开辟香港更加繁荣稳定的新时代。
23点50分。一支[8名英军海、陆、空三军组成的卫队.在一名上尉军官的指挥下,步入营区大门东侧就位。两名英国士兵出列上岗c
23点54分。人民解放军驻香港部队由18名威武、英俊的陆、海、空三军战士组成的卫队,在指挥官张洪涛上尉的指挥下.迈着雄健、整齐的步伐进入大门西侧就位。
23点56分。我方两名陆军士兵从两队指挥官今间走过,分别站到大门内两侧。
23点58分c中英双方各自派出一名中校指挥官,面对面走到相隔4米处立定。达时,英方指挥宫向我方中校指挥官谭善爱敬礼报告:‚谭善爱中校.威尔斯亲玉军营现在准备完毕,请你接收。祝体和你的同事们好运.顺利上岗d长官,请允许我让威尔斯亲王军营卫队下岗。‛
谭善爱中校用洪亮的声音答道:
‚我代表中国人民解放军驻香港部队接管军营。你们可以下岗,我们上岗‘、祝你们一路平安。‛说完,两人的手握在了一起。
这看似轻轻的一握,握别的是硝烟,留下的是未来。
‚撤离。‛英方指挥官一声令下,英军卫队走出营门,走向停靠在岸边即将离港的‚漆成%号驱逐舰:当最后——名英军士兵走出营门时,时针指向了23时59分55秒.从此,英国在香港驻军的历史待随着维多利亚港湾那翻滚的波涛远
神圣的时刻,就在眼前。
‚立正——半面向右转厂身着新式礼服、肩挂经带的人民解放军护旗队,迈着正步走向旗杆。掌旗手在两名护旗兵的护卫下,登上升旗台。
这时的军营庄严肃穆,场上的每个军人都似乎听得到自已哈啤的心跳。他们知道,全球华夏子孙,都在为这一刻呐减——5、4、3、2、1!
…………。通讯这类的新闻大家平时读报时肯定也读过。通讯写作最要注意细节,用最生动具体的事实来表现主题。时间不多了,我就不多说了。