2017-11-15 8 views
0

これはC++言語の新人ですが、基本的な質問ですが、forループの1文字を出力する関数を持つプログラムがあります。forループ内の文字を出力するC++

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); 

:私はここで間違って

******** 

何をしているのですか?手始めに

+2

S/'プリントバー(SYM、サイズ)を実行している必要がありsym、size); ' – user0042

+6

' char * 'と' char'は異なるタイプです。 – molbdnilo

+1

*ポインタ*を1文字ではなく1文字に渡しています。 'printBar(sym [0]、size);' –

答えて

2

ある

#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つのあまりにも多くの文字が印刷されます

void printBar(const char symbol, int count){ 
    for (int i = 0;i <= count; i++){ 
     cout << symbol; 
    } 
} 

間違っているまず

を推測することができます。 `/`プリントバー(*;あなたはi < count

第二に、あなたの関数がcharが必要ですが、あなたがcharで渡す*

この

int main(){ 

int size = 8; 
const char sym = '*': 
printBar(sym,size); 
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は、関数があなたに渡す必要がある

printBar(*sym,size); 

または

printBar(sym[0],size); 

のように呼ばれるべき

const char* sym = "*": 

のように宣言した場合関数ポインタの代わりに1文字だけ。それはその出力はあなたがwriong何が起こるのか言うべき

******** 
+0

'const'を削除するのはなぜですか?それは傷つけない、または私は何かを逃している? – user463035818

+0

@ tobi303引数は値によって関数に渡されます。したがって、修飾子は理にかなっていません。これらの2つの関数の宣言void printBar(condt char symbol、int count);およびvoid printBar(char symbol、int count);同じ1つの関数を宣言します。 –

+0

パラメータが関数内で変更されていないことを表します。これが意味をなさないかどうかは味の問題ですが、私はあなたの視点を理解することができます。 Btw私はちょうどちょっと混乱しましたが、もちろん正確性に関してそれほど大きな違いはありません – user463035818

関連する問題