2016-11-30 34 views
-1

我正在为类进行分配,我们基本上必须提示用户输入两个文本文件。程序应该读取文件,显示它们,并显示单独的文件统计信息。文本文件统计信息和显示它们的问题

我一直在研究代码,似乎碰到了一堵砖墙。我似乎只能显示第二个文本文件的统​​计信息;此外,所述文件中的文本似乎没有被显示。

确实很困惑,所以任何帮助将非常感激。尽管我付出了努力,但我仍然在为这个阶级而努力。 :(

反正代码(一团糟我相信):

#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

'fgetc'返回一个“int”,而不是“char”。并请以一致的方式格式化您的代码。并考虑学习如何使用调试器。 –

回答

1

你的第一个循环读取&显示的第一个文件,而不是试图自行收集或报告的统计数字;第二个循环读取,收集&报告的统计数据,但并不试图显示。

我的建议是写一个函数来做到这一切的单个文件,然后调用一次对于要这样处理每个文件。

+0

谢谢。我会放弃它。然而,函数是我开始真正与这个模块斗争的地方。直到那时我才明白我一直在学习什么。将继续尝试。 再次感谢斯科特。 :) – sls1981

相关问题