我试着在C语言上做一个代码,它读取file.txt,将其输出到控制台,然后计算行数、字数等,最后将file.txt的内容导出到file2.txt,但顺序相反。
文本需要从以下内容开始:
我爱你
更改为:
是的
我的文本文件中有什么:enter image description here
我现在得到的代码:enter image description here
这是我的代码,需要改进,因为它打印的代码我需要,但与空白行,这是不需要的.它需要导出到另一个文件也:
fseek(fptr,0,SEEK_END);
pos=ftell(fptr);
i=0;
while(i<pos)
{
i++;
fseek(fptr,-i,SEEK_END);
ch=fgetc(fptr);
printf("%c",ch);
}
下面是完整代码:
#include <stdio.h>
int main ()
{
FILE *fptr;
int i, n, j, pos;
char str[100];
char fname[20]="mfile.txt";
char newch[500];
int wrd=1,charctr=1,rows=1;
char str1;
char ch;
int no_lines = 1;
int COUNT = 0;
fptr = fopen(fname,"r");
if(fptr == NULL)
{
printf(" \n");
printf("File does not exist or can not be opened.");
}
else
{
ch=fgetc(fptr);
printf(" \n");
printf("The content of the file %s are: \n", fname);
printf(" \n");
while(ch != EOF)
{
printf("%c",ch);
if(ch==' '||ch=='\n')
{
wrd++;
}
else
{
charctr++;
}
if(ch=='\n')
{
rows++;
}
ch=fgetc(fptr);
}
int wrd1 = wrd - 1;
float charctr1 = charctr - 1;
float rows1 = rows;
float averageSymbol = charctr1 / rows1;
printf(" \n");
printf("\nwrd = %d, charctr = %d", wrd, charctr-1);
printf("\nThe number of rows in the file %s are : %d\n", fname,rows);
printf("\nThe average amount of symbols in a row is %f\n", averageSymbol);
printf(" \n");
}
fseek(fptr,0,SEEK_END);
pos=ftell(fptr);
i=0;
while(i<pos)
{
i++;
fseek(fptr,-i,SEEK_END);
ch=fgetc(fptr);
printf("%c",ch);
}
fclose(fptr);
return 0;
}
1条答案
按热度按时间bnlyeluc1#
好的,如果我理解正确的话,你想去掉代码中出现的一些空行,然后你还想把程序的输出(反转的文本)写入另一个文件?我假设你想让句子也按原来的顺序。
这个版本首先检查一个名为outputfile.txt的文件是否存在,如果不存在,它就创建它。如果该文件已经存在,那么程序会用新的程序输出覆盖原来在文件中的内容(它不会完全清除该文件)。