aihot  2020-11-12 10:45:00  OpenCV |   查看评论   

 《TCPL》 第7章 输入与输出

7.1 标准输入/输出

getchar()是最简单的输入机制,每次从标准输入中一次读取一个字符;int getchar(void);

输入一般来自键盘,可以重定向从文件中,比如prog是一个prog<infile将从infile中读取输入。

putchar()用于输出数据。int putchar(int),它返回输出的字符,如果失败则返回EOF。

同理可以重定向输出,如prog>outfile。

事实上getchar()与putchar()在头文件stdio中都是宏,并不是真正的函数。

7.2 格式化输出——printf函数

printf的原型为:int printf(char *format,arg1,arg2, …);

在转换说明中,宽度或精度可以用星号*表示,这时,宽度或精度的值通过转换下一参数(必须为int)来计算。例如,为了从字符串s中打印最多max个字符,可以使用下列语句:

printf("%.*s",max,s);

上面语句中max是一个变量,打印s中最多max个字符。

sprintf函数格式转换功能与printf一样,但是它将输出保存在一直字符串中。

int sprintf(char *string,char *format,arg1,arg2,…);

7.3 变长参数表

这里实现了一个简化的printf函数minprintf

7.4 格式化输入——scanf函数

int scanf(char *format, …)

函数返回成功匹配并赋值的输入项的个数。

另一个sscanf用于从一个字符串中读取字符序列。

int sscanf(char *string, char *format, arg1, arg2,…);

它按照format中规定的格式扫描字符串string,并把结果分别保存到arg1,arg2这些参数中,这些参数必须为指针。

如果scanf的转换说明中的赋值禁止符*,则跳过该字段,不进行赋值。

如果要读取格式不固定的输入,最好每次读入一行,然后再用sscanf将合适的格式分离出来读入。例如,我们需要读入一些包含日期的输入行,日期的格式可能是以下任一种形式。

18 Oct 2013

10/18/2013

while(getline(line,sizeof(line)) > 0) {     if(sscanf(line,"%d%s%d",&day,month,&year)==3)         printf("valid:%s\n",line);     else if(sscanf(line,"%d/%d/%d",&month,&day,&year)==3)         printf("valid:%s\n",line);     else         printf("invalid:%s\n"            
 1/4    1 2 3 4 下一页 尾页
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自《TCPL》 第7章 输入与输出

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]