在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);
}
答案 0 :(得分:1)
对于打开更新的文件(包含“+”符号的文件),允许输入和输出操作,应该在写入之间刷新流(fflush)或重新定位(fseek,fsetpos,rewind)操作之后是读取操作或读取操作,这些操作没有到达文件结尾,然后是写入操作。
我让你的例子在行前后使用ftell
anf fseek
工作:
fputc(toupper(c),p);