如何将文件中每个新行的第一个字母作为C中的大写

时间:2013-10-27 07:11:02

标签: c file pointers

在text.txt文件中,我有一些行,例如“苹果是红色的。瓜是绿色的。白色是黄色的”。我想要新行中的第一个字母(g在番石榴中,l在柠檬中作为大写)。但是文件中的输出是相同的......

#include<stdio.h>
main()
{
  FILE *p;
  char c;
  int i;
  int end_of_line=0;
  p=fopen("text.txt","r+");//opening file for reading & writing.

  while(c!=EOF)
  {
    c=fgetc(p);
    if(end_of_line==1) // if it is a new line
    if (islower(c)!=0) // and if the first letter is small
      fputc(toupper(c),p); //change the small to capital
    if(c=='.')
      end_of_line=1;
    else
      end_of_line=0;
  }
  fseek( p, 0, SEEK_SET ); //setting the file pointer to the start of file
  while((c=fgetc(p))!=EOF)
    printf("%c",c);
  fclose(p);
}

1 个答案:

答案 0 :(得分:1)

  

对于打开更新的文件(包含“+”符号的文件),允许输入和输出操作,应该在写入之间刷新流(fflush)或重新定位(fseek,fsetpos,rewind)操作之后是读取操作或读取操作,这些操作没有到达文件结尾,然后是写入操作。

我让你的例子在行前后使用ftell anf fseek工作:

fputc(toupper(c),p);