【发布时间】:2017-10-26 01:06:00
【问题描述】:
#include <string>
#include <cstdlib>
#include <iostream>
using namespace std;
// function prototypes
string boxOfStars(int w, int h);
string lineOfStars(int len);
// function definitions
string lineOfStars(int len) {
string result = "";
for (int j=0; j<len; j++) {
result += "*";
}
return result;
}
string boxOfStars(int w, int h) {
string result_1 = lineOfStars(w);
for (int i=0; i<h; i++)
cout << result_1 << endl;
return 0;
}
int main() {
int width, length;
cout << ""Enter a width and length: ";
cin >> width >> length;
cout << boxOfStars(width, length);
return 0;
}
这个程序的重点是在boxOfStars()函数中调用lineOfStars()函数。
当我运行程序时,我收到“Segmentation fault: 11”错误。
输入宽度和长度:5 5 ***** ***** ***** ***** ***** 分段错误:11我已尝试在整个互联网上搜索此问题,但似乎找不到问题。
程序在终端中运行良好,但在每次输出结束时,我都会收到此错误消息。
有人可以向我解释我的代码中的错误吗?
【问题讨论】:
-
您在
boxOfStars()中返回0。您有几个选择:在boxOfStars()中使用cout并使其成为void或组成一个包含星形行的字符串,返回比字符串和cout它在main()中。 -
除了导致segfault的问题,你的
lineOfStars函数应该简单很多。与其在循环中添加字符串,不如只调用接受字符和长度的string构造函数,就像return string(len, '*');一样。 -
@Ryan:这就是调试器的意义所在。了解如何使用一个。它会帮助你找到段错误。