-4

所以我需要读入一个文件,然后每次使用数组出现字符时创建一个字数和字符数。每个单词都以空格、逗号、句号等结尾。我还需要放一个 tolower 和一个方程来使用 x-'a' 函数或类似的东西将字母设置为正确的数组。

来自腻子的错误列表(我知道的糟糕程序,但它是必需的)

project8.cpp:在函数âint main()â中:
project8.cpp:17:错误:âfile1â未在此范围内声明
project8.cpp:18:错误:预期â;â在âwhileâ之前
project8.cpp:36:错误:预期â}â 在输入结束时

#include <iostream>
#include <string>
using namespace std;

    int in_word = false;
    int word_count = 0;
    char ch;
    char low_case;
    int char_count[26];
    int i;

int main()
{
    for (i=0; i<26; i++)
    char_count[i]=0;

cin.get(file1.txt)
while('\n' !=(ch=cin.get(file1.txt)))
{
if (' ' == ch || '\n' == ch || '\t' == ch)
    in_word = false;
else if (in_word == false)
    {
    in_word=true;
    word_count++;
    }
else low_case=tolower(ch);
    char_count[int(low_case)-int('a')]++;
}

cout << file1.txt;
cout << words << " words" << endl;
for (i=0; i<26; i++)
    if(count[i] !=0)
    cout << count[i] << " " << char(i+'a') << endl;
}
4

2 回答 2

1

第一个问题是你没有声明file1. 有点不清楚file1.txt真正的意思是什么:它的编写方式,它似乎是一个类型的对象,带有一个名为,txt类型char*char[N](带有一个常量N)的成员。从外观上看,您实际上想要打开一个名为file1.txt. 这看起来像这样:

std::ifstream in("file1.txt");

之后,您当然会使用in而不是std::cin从文件中读取。例如你可以使用

for (char c; in.get(c); ) {
    // ...
}

读取文件的每个单独字符并适当地处理它。

于 2013-11-05T23:38:51.837 回答
1

来玩编译器吧!

你不能命名一个变量file1.txt,调用它file1

另外,您忘记了行尾的分号;,所以

cin.get(file1.txt)

应该

cin.get(file1);

我不太清楚你在哪里定义这个变量,所以你可能会错过像这样的声明

const char* file1="file1.txt";

count此外,您在此处的 for 循环之后开始尝试访问一些变量:

count[i]

你的意思是使用char_count

于 2013-11-05T23:31:46.683 回答