我需要打印出文件中所有以大写字母开头的单词

时间:2019-05-14 13:33:18

标签: c

我需要访问一个文件,并且需要从该文件中打印出所有以大写字母开头的单词以及单词出现的次数。例如,在文件中有一个文本“程序应同时显示文件和文件” 现在的输出应该是:

文字

程序

显示

Files(2)//这个单词被写了两次

enter image description here

2 个答案:

答案 0 :(得分:1)

while (!feof(..))通常不是一个好主意,而是写

while (fgets(readLine,sizeof(readLine), fpointer) != NULL)
{
}

在这种情况下,ptr似乎是多余的,如果您想检查一行中的单词,应该将其向前移动吗?

alt。改用运行时函数strtok:

for (ptr = strtok(readLine, " "); ptr != NULL; ptr = strtok(NULL, " ")
{
   // now ptr will point to each word in the line, then you just check
   // if the first character is upper case.
 }    

答案 1 :(得分:1)

这听起来像是一项家庭作业,所以我不会在这里放置代码。我可以为您提供一个大致了解的步骤:

  • Open and read the file
  • 使用类似strtok的字词将行分成单词
  • 将单词放在单词上并检查第一个字符(请记住,单词是一个字符数组。根据ascii table,您可以检查它是否在60到95之间。
  • 要对单词计数,您可以创建一个哈希图,在其中存储带有计数值的单词,例如{word1: 1, word2: 2}
  • 最后,您遍历哈希图中的所有键,并打印键+计数。