为什么我的struct只存储最后一个字符串,而不是每一个
Why does my struct only store string on the last one and not every?
所以我创建了一个结构体,并在函数中调用它,但事情并不顺利…
结构体如下…
<<p> 结构函数/strong>struct Line {
private:
int lineNumber;
char lineString[];
public:
bool set(int n,const char* str);
void display() const;
};
函数内的一切都很好,我存储了lineN和lineS,然后将它们发送到名为…bool set(int, const char* str);(如上所述)使用名为storage的结构体。在第一个while循环之后,我使用了一个名为display的函数来…显示lol。
集合函数
void List::set(int no){
Line storage[no];
int i =0, x;
while (i!=no){
cout << "Enter line number : ";
cin >> lineN;
cout << "Enter line string : ";
cin >> lineS;
x = storage[i].set(lineN, lineS);
if (x == 1){
i++;
}
}
i=0;
while (i!=no){
storage[i].display();
i++;
}
}
除了检查"真/假"之外,true是任何正整数,false是0或负整数。我使用以下bool在存储结构中存储数字(如果它们是true)…我认为问题就在这里,但我似乎无法理解……
<<p> BOOL函数/strong>bool Line::set(int n, const char* str){
int i;
if (n >= 1){
lineNumber = n;
for (i=0;i<6;i++){
lineString[i]=str[i];
}
lineString[6]=' ';
return true;
}
else if (n <= 0)
return false;
}
<<p> 显示功能/strong> void Line::display()const{
cout << "LINE: " << lineNumber << " STRING: " << lineString << endl;
}
然而,当我点击运行程序,假设我输入3次…行号和行字符串…我的结果如下…
输入:Enter line number : 3
Enter line string : ABCDEF
Enter line number : 6
Enter line string : YYUTXL
Enter line number : 8
Enter line string : XYXYXX
输出:LINE: 3 STRING:
LINE: 6 STRING:
LINE: 8 STRING: XYXYXX
所以我的问题是为什么在最后一个之前没有被存储在字符串中,如果我这样做2次,只有第二个/最后一个会在里面有字符串。我的存储是正确的,不是吗?
输出:
LINE: 3 STRING: ABCDEF
LINE: 6 STRING: YYUTXL
LINE: 8 STRING: XYXYXX
问题在于这是在创建一个空数组:
char lineString[];
你没有告诉它要多大,所以它把它设为0字节长。因此,尝试保存6个字符串是在覆盖内存。
你真的应该使用std::string
,但如果你不想,你至少需要说明你的字符串有多大:
char lineString[50]; // save up to 49 characters + NULL.
相关文章:
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 如何检查一个c++字符串中有多少相同的字符/数字
- 获取用C/C++打印的最后一个字符串
- cin >> int 给定一个字符串将 int 赋值为 0
- 我如何通过引用将 c++ 字符串分配给另一个字符串
- 使用另一个字符串从字符串中删除空格
- 有没有办法使用 strcpy 将字符串数组复制到另一个字符串或其他数组中?
- 当分配一个字符串值并稍后通过分配另一个值进行更改时C++如何管理内存?
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- C++为 void 指针分配一个字符串
- 如何在使用 getch 后在另一个字符串的末尾连接一个字符串
- 给定一个单词数组和一个字符串,如何计算给定字符串中的所有单词
- 如何在另一个字符串的x位置插入一个字符串?
- 有没有办法我可以在 C++ 中使用 if 语句来说明如果一个字符串不是两个名称的 eqal,它会给出一个输出,ATM i
- 在另一个字符串中插入文件扩展名之前的字符串
- 我有一个返回字符串向量的函数.它需要两个字符串,并且返回一个字符串中缺少的字符串
- 从C 中的线路读取(每行都有一个字符串和几个INT值)
- 每隔n次反转一个字符串
- 从文件中读取数据,该文件每行都有一个字符串,其中可能有也可能没有整数
- 为什么我的struct只存储最后一个字符串,而不是每一个