//1. 编写一个打印eof值的函数
#include <stdio.h>
#include <ctype.h>
#define MAXLINE 1000 /*允许输入行的最大值*/
/*把输入复制到输出,并且将连续的空格换成一个空格*/
void integrateSpace()
{
int cr ,pre;
while((cr=getchar())!=EOF)
{
if(pre==32 && cr==32)
continue;
pre = cr;
putchar(cr);
}
}
/*将输入复制到输出,并\n且把制表符替换为\t 回退符 替换为\b 把\ 替换位*/
void replaceMake()
{
int cr ;
while((cr=getchar())!=EOF)
{
if(cr=='\t')
{
printf("\\t");
continue;
}
if(cr=='\b')
{
printf("\\b");
continue;
}
if(cr=='\\')
{
printf("\\\\");
continue;
}
putchar(cr);
}
}
/*count the number of word */
void countWord()
{
int nl,nw,nc;
nl=nw=nc=0;
int cr ,pre;
while((cr=getchar())!=EOF)
{
if(cr == '\n')
nl++;
pre = tolower(pre);
if(cr == '\t' || cr == '\n' || cr == ' ')
if(pre>='a' && pre<='z')
{
++nw;
printf("%c , nw : %d",pre,nw);
}
pre = cr;
}
if('a'<pre && pre<'z')
{
putchar(pre);
nw++;
}
printf("words : %d,lines : %d \n",nw,nl);
}
/*将一行数据读入line中并返回其长度
line 是一个数组,用来存放输入数据
lim 是定义的行的最大长度
*/
int getLine(char line[],int lim)
{
int c,i;
for(i=0;i<lim-1 && (c=getchar())!=EOF && c!='\n';i++)
line[i] = c;
if(c == '\n')
{
line[i] = c;
i++;
}
line[i] = '\0';
return i;
}
/*将from 拷贝到 to
这里没有检测to的长度小于form的长度*/
void copy(char to[],char form[])
{
int i=0;
while((to[i]=form[i])!='\0')
i++;
}
/* 获取输入行的最长行并且输出
输入Ctrl+d 结束输入 */
void getLongestLine()
{
char line[MAXLINE];
char lineLongest[MAXLINE];
int max,length;
max=length=0;
while((length=getLine(line,MAXLINE))>0)
{
if(length > max)
{
max = length;
copy(lineLongest,line);
}
}
printf("length: %d\n %s",max,lineLongest);
}
/*
把输入的一行字符,反向输出
*/
void reverse(char line[],int length)
{
// int index = 0;
// while(line[index++] != '\0');
// index = index - 2; //字符串的实际长度不包含 \0
int left = 0;
int right = length-2;
while(left<right)
{
int temp = line[left];
line[left++] = line[right];
line[right--] = temp;
}
}
/*
去除注释,想法:就是读取到// 或者 \/* 结束,
读到之后,不写,不是注释的取出来,判断
输入的这一行是不是注释,是就设置为空,
不是就不做处理
我这个就是最简单的单行处理,复杂的现在还写不了
*/
void deleteAnnotation(char line[])
{
if(line[0]=='/' && line[1]=='/')
{
line[0]='\0';
return;
}
int index=0;
int start,end;
while(line[++index]!='\0')
{
if(line[index-1]=='/' && line[index]=='/')
{
line[index-1]='\0';
return;
}
if(line[index-1]=='/' && line[index]=='*')
{
line[index-1] = '\0';
return;
}
}
}
/**/
main()
{
char line[MAXLINE];
int length = getLine(line,MAXLINE);
deleteAnnotation(line);
printf("%s",line);
}
The C programing language 第一章
原创
©著作权归作者所有:来自51CTO博客作者mb61ced0f6e4a25的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
第一章、HarmonyOS介绍简介
HarmonyOS简介
开发者 测试工具 应用开发 -
第一章 C语言简述
C语言程序设计笔记 第一章
程序设计语言 #include 源程序