//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);

}