这是一个非常基本的问题,因为我是C ++语言的新手,但我有一个程序,它采用函数在for循环中打印单个字符。我的代码如下所示:
void printBar(const char symbol, int count){
for (int i = 0;i <= count; i++){
cout << symbol;
}
}
我的主要功能是:
int main(){
int size = 8;
const char* sym = "*":
printBar(sym,size);
我希望我的结果看起来像这样:
********
我在这里做错了什么?
答案 0 :(得分:2)
对于初学者来说有一个拼写错误
const char* sym = "*":
^^^
应该有分号。
函数中的循环应该看起来像
void printBar(const char symbol, int count){
for (int i = 0; i < count; i++){
^^^^^^^^^
cout << symbol;
}
}
可以删除第一个参数声明中的限定符const。
void printBar(char symbol, int count){
如果变量sym
声明为
const char* sym = "*":
然后应该像
一样调用该函数printBar(*sym,size);
或
printBar(sym[0],size);
你只需要将一个字符而不是指针传递给函数。
编写函数的另一种方法可以看作是在演示程序中显示的
#include <iostream>
#include <iomanip>
std::ostream & printBar( char symbol, size_t count, std::ostream &os = std::cout )
{
if ( count )
{
os << std::setw( count ) << std::setfill( symbol ) << symbol;
}
return os;
}
int main()
{
size_t size = 8;
const char *sym = "*";
printBar( *sym, size ) << std::endl;
return 0;
}
它的输出是
********
答案 1 :(得分:2)
你应该说什么是疯子。错误,输出错误......但我可以猜测
首先这个循环是错误的
void printBar(const char symbol, int count){
for (int i = 0;i <= count; i++){
cout << symbol;
}
}
它会打印一个太多的char。你应该有i < count
其次你的函数需要一个char,但你传入一个char *
这样做
int main(){
int size = 8;
const char sym = '*':
printBar(sym,size);