【问题描述】

英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号“:”分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中:
1.从标准输入读取一整数,作为排版后所有各行冒号“:”在一行中的固定位置;假设输入的整数肯定大于排版后所有各行冒号“:”前的字符个数,位置从1开始计数;
2.冒号“:”左边的单词串以行头为基准左对齐,左边的最后一个单词与冒号之间以空格填充;冒号“:”右边的单词串以冒号“:”为基准左对齐,最后一个单词后只有回车换行符,不再有其它字符;
3.冒号“:”左右两边的单词间都只有一个空格分隔,并且要求冒号两边至少各有一个空格。
假设输入文件中每行字符个数不超过100。

【输入形式】

待排版的参演人员名单从当前目录下的listin.txt文件中读入;表示冒号“:”位置的整数从标准输入读入。

【输出形式】

排版后的参演人员名单输出到当前目录下的listout.txt中。

【输入样例】

假设文件listin.txt内容为:
Digital Intermediate by : EFILM
Supervising Digital Colorist : STEVEN J. SCOTT
Second Colorist :ANDREW FRANCIS
Digital Intermediate Producer:LOAN PHAN
Digital Intermediate Editor: DEVON MILLER

表示冒号固定位置的整数为:

40

【输出样例】

文件listout.txt中的内容应为:

【样例说明】

输入的文件listin.txt中有五行参演人员名单,要求排版后冒号“:”位于第40个字符的位置,按照上述排版规则输出到文件listout.txt中

#include<stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{void pr(char c[][100],int num,FILE *g,int x);FILE *f,*g;f=fopen("listin.txt","r");g=fopen("listout.txt","w");int i=1,num,x;char c[100][100];while (!feof(f)){fgets(c[i], 100, f);i++;}scanf("%d",&num);//冒号位置 for(x=1;x<i;x++)pr(c,num,g,x);//输出fclose(f);fclose(g);return 0;
}
void pr(char c[][100],int num,FILE *g,int x)
{int i=0,count=0,j,k=0;while(c[x][k]==' '||c[x][k]=='\t')//去掉开始的空格和水平制表符  k++;for( i=k;i<100;i++){if(c[x][i]=='\0')break;if(c[x][i]==':'){for(j=count+1;j<num;j++)fprintf(g," ");//补齐冒号之前的空格 fprintf(g,"%c",c[x][i]);c[x][i]=' ';//将冒号位置重置为空格,执行下面去掉多余空格的语句后一定会保证冒号右边只输出一个空格 i--;continue;}while((c[x][i]=='\t'||c[x][i]==' ')&&(c[x][i+1]=='\t'||c[x][i+1]==' '))//去掉两个单词之间多余空格和水平制表符  i++;if(c[x][i]=='\t'){fprintf(g," ");count++;continue;}fprintf(g,"%c",c[x][i]);count++;}
}

文件排版1(C语言)相关推荐

  1. python使用fpdf生成pdf文件:配置多种语言字体写入多种文字

    python使用fpdf生成pdf文件:配置多种语言字体写入多种文字 目录

  2. linux c 判断文件打开文件,Linux 用C语言判断文件和文件夹

    Linux 用C语言判断文件和文件夹 #include #include #include #include int access(const char *pathname, int mode); i ...

  3. 文件排版,较难的线性dp

    文件排版 写电子邮件是有趣的,但不幸的是经常写不好看,主要是因为所有的行不一样长,你的上司想要发排版精美的电子邮件,你的任务是为他编写一个电子邮件排版程序. 完成这个任务最简单的办法是在太短的行中的单 ...

  4. Teams的manifest文件开始支持多语言

    Teams发展速度飞快,Teams app的manifest文件schema也迎来了版本1.5,在这个版本里,很大的一个改进是支持多语言. 让我们一起来看看,如何在manifest文件里配置多语言. ...

  5. Linux学习之嵌入式Linux编程文件IO(C语言版)

    Linux学习之嵌入式Linux编程文件IO(C语言版) 一.文件IO常用函数 1.open 2.write 3.read 示例代码: #include <sys/types.h> #in ...

  6. 设置 Visual Studio 文件版权信息 - C语言零基础入门教程

    目录 一.手动修改原始代码模板 二.通过插件 Visual Assist 设置版权信息 1.安装插件 Visual Assist 2.打开 VS,找到 VAssistX 选项 3.设置模板内容 4.点 ...

  7. 改动文件后缀的C语言实现

    在实际的软件开发项目中.大家或许会遇到改动文件的后缀的需求(比如,将doc格式改动为docx格式). 本文提供了改动文件后缀的C语言实现.并演示了改动文件后缀的过程.         1. C程序实现 ...

  8. c语言文件打开方式字符串,C语言打开文件-C语言打开文件的方式-C语言以只读方式打开文件-C语言以读写方式打开文件-嗨客网...

    C语言打开文件教程 在 在 C 语言中,打开文件使用 fopen C语言fopen函数详解 语法 FILE *fopen(char *filename, char *mode); 参数 参数 描述 f ...

  9. 英文排版系统C语言实现

    英文排版系统C语言实现 代码: #include <stdio.h> #include <stdlib.h> #include<string.h>void rout ...

  10. 标准c语言局域网文件传输,winsocket局域网文件传输系统源代码(C语言)+winsocket.doc...

    winsocket局域网文件传输系统源代码(C语言)winsocket 翁跺吨郑蛮杨消痴线豆电眩也行却猖革甥花顶豹扣损纽眺福圈汀森饮翁篮玉鳃将汇铆梗敬剑砷香祝景驰疆赋恢爽宛关唾上盼唁墒酗箭抒厚檬毅袭眉 ...

最新文章

  1. as3.0中如何阻止事件冒泡?
  2. swift x输入流_SwiftUI 探索 - 状态和数据流
  3. java.util.concurrent.Callable 接口 源码
  4. 怎样成为一个高手观后感
  5. 初识java反射机制
  6. UDP如何实现可靠传输
  7. 面试和学习必备--Java多线程
  8. Codeforces #499 E Border ( 裴蜀定理 )
  9. 百联OJ:2723:不吉利日期
  10. 求数的绝对值一定是正数_人教版初中数学七年级上册绝对值公开课优质课课件教案视频...
  11. python字符串相加_Python实用技法第33篇:字符串连接及合并
  12. Windows 8 中取消的功能特性
  13. 聋校计算机教学工作总结,聋校二年级数学教学工作总结
  14. java分割两个时间段不在同月份
  15. python是什么-Python 是什么
  16. 知识图谱编辑器(KG-Editor)
  17. 解决 Android 7.0 SQLiteCantOpenDatabaseException: unknown error (code 14)
  18. 服务器固态硬盘接口类型,怎么看固态硬盘接口?固态硬盘接口都有哪些类型?...
  19. lisp代码合并_CAD 同名文件合并(不开图)
  20. 【Derivation】 条件数学期望公式

热门文章

  1. 我教女朋友学编程Html系列(6)—Html常用表单控件
  2. pandas dataframe query()
  3. mobi文件怎么打开?
  4. windows 系统安装苹果操作系统
  5. Netty常用招式——ChannelHandler与编解码
  6. 微信小程序 模仿华为音乐 列表界面
  7. EagleEye简介:户外视频监控分析和面部识别软件
  8. .net mvc ef 视图未定义主键问题
  9. 数据库三大顶级会议 VLDB ICDE SIGMOD
  10. 8月书讯丨11本新上好书速览(计算机+经管)