我正在为课程分配工作,我们基本上必须提示用户输入两个文本文件。然后程序应该读取文件,显示它们,并显示单独的文件统计信息。
我一直在研究代码,似乎已经碰壁了。我似乎只能显示第二个文本文件的统计信息;而且,来自所述文件的文本似乎没有被显示。
确实很困惑,所以任何帮助都会非常感激。尽管付出了努力,我仍然在努力学习这门课程。 :(
无论如何,代码(我确定总是一团糟):
#include <stdio.h>
int main() {
FILE *fp;
char ch;
int lineCount, wordCount, charCount;
char filename[50], filename2[50];
lineCount = 0;
wordCount = 0;
charCount = 0;
printf("Enter a filename: ");
gets(filename);
fp=fopen(filename, "r");
if(fp==NULL) {
printf("Error!\n");
return 1;
}
while((ch=fgetc(fp)) != EOF) {
putchar(ch);
}
fclose(fp);
printf("\n");
printf("Enter a second filename: ");
gets(filename2);
fp=fopen(filename2, "r");
if(fp==NULL) {
printf("Error!\n");
return 1;
}
while((ch=fgetc(fp)) != EOF) {
if ( fp )
{
while ((ch=getc(fp)) != EOF) {
if (ch != ' ' && ch != '\n') { ++charCount; }
if (ch == ' ' || ch == '\n') { ++wordCount; }
if (ch == '\n') { ++lineCount; }
}
if (charCount > 0) {
++lineCount;
++wordCount;
}
}
printf("Lines counted: %d \n", lineCount);
printf("Words counted: %d \n", wordCount);
printf("Characters counted: %d \n", charCount);
getchar();
putchar(ch);
}
fclose(fp);
printf("\n");
return 0;
}
答案 0 :(得分:1)
你的第一个循环读取&amp;显示第一个文件,而不是尝试收集或报告任何统计信息;你的第二个循环读取,收集&amp;报告统计信息,但不会尝试显示。
我的建议是编写一个函数来为单个文件执行所有这些操作,然后为您希望如此处理的每个文件调用一次。