【发布时间】:2013-06-14 21:07:13
【问题描述】:
这就是我正在开发的程序。到目前为止,它只是在我的 CPP 文件中打印出双精度值。注意我设置的两个字符数组。这是为什么呢?
分子.h
const int MAX_STRUCT = 10;
const int MAX_NAME = 20;
class Molecule {
char molecule_structure[];
char molecule_name[];
double molecule_mass;
public:
Molecule();
bool read();
void display() const;
};
分子.cpp
#include <iostream>
#include <cstring>
using namespace std;
#include "Molecule.h"
Molecule::Molecule() {
molecule_structure[0] = '\0';
molecule_name[0] = '\0';
molecule_mass = 0;
}
bool Molecule::read(){
bool complete = false;
cout << "Enter structure : ";
cin.getline (molecule_structure, 10);
if (strcmp (molecule_structure, "0") != 0){
cout << "Enter full name : ";
cin.getline (molecule_name, 20);
cout << "Enter weight : ";
cin >> molecule_mass;
cin.ignore();
complete = true;
}
else {
molecule_structure[0] = '\0';
molecule_name[0] = '\0';
molecule_mass = 0;
}
return complete;
}
void Molecule::display() const
{
cout << molecule_structure << " " << molecule_name << " " << molecule_mass << endl;
}
w4x.h
const int MAX_MOLECULES = 10;
w4x.cpp
#include <iostream>
using namespace std;
#include "w4x.h"
#include "Molecule.h"
int main() {
int n = MAX_MOLECULES;
Molecule molecule[MAX_MOLECULES];
cout << "Molecular Information\n";
cout << "=====================" << endl;
for (int i = 0; i < MAX_MOLECULES; i++) {
if (!molecule[i].read()) {
n = i;
i = MAX_MOLECULES;
}
cout << endl;
}
cout << "Structure Name Mass\n";
cout << "==================================================" << endl;
for (int i = 0; i < n; i++)
molecule[i].display();
}
我认为这些错误来自我的 Molecule.cpp 文件,这是我一直在改变的。 这是我目前收到的输出。
Molecular Information
=====================
Enter structure : Super
Enter full name : Man
Enter weight : 57
Enter structure : 0
Structure Name Mass
==================================================
57
【问题讨论】:
-
欢迎来到 Stack Overflow。请尽快阅读FAQ。你不应该在课堂上使用
char molecule_structure[];;您可能应该使用字符串,否则,您应该使用大小合适的字符数组,例如char molecule_structure[64];。这是否是你麻烦的根源是另一回事,但应该认真看待。 -
问:你为 char 数组分配了多少内存? A:None 如果你不懂 char 数组和指针,那么 std::string 会让你的生活变得更轻松。