ギリギリ行けるお一人様のライン

#include <iostream>
using namespace std;

void putv (const char* s){
for (int i = 0;s[i] != 0; s++){//ここが原因と思っている。
cout << s[i];
cout << '\n';
}
}

int main(void){
  char b;

cin >> b;//ここが原因だと思っている。

putv(&b);//ここが原因だと思っている。

return 0;
}

以上がプログラムです。実行結果は例えば入力する文字列が「windows」の場合、
w
i
n
d
o
w
s
と表示させたいです。charポインターと文字列の練習で取り組んでいるので、分かったら教えて頂きたいです。

質問者からの補足コメント

  • 実行結果を示し忘れていました。
    このプログラムを実行した際の結果は
    windowsの場合
    w
    で終わります。

      補足日時:2020/10/20 11:45
  • そうですね、実行結果を忘れていましたので、それを補足で先程投稿しました。
    main関数内で文字列を入れるのはcharで、関数はポインタで書きたいです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/10/20 11:47

A 回答 (5件)

あ、失礼


for (char i:s)
はC++っぽくないので、
for (auto i:s)
の方がぽいです。
    • good
    • 0

C++だったら、string型使いましょ。



#include <iostream>
#include <string>
using namespace std;
void putv(string s)
{
for (char i:s)
cout << i << endl;
}
int main(void)
{
string b;
cin >> b;
putv(b);
return 0;
}
    • good
    • 0

#include <iostream>


#include <cstdlib>
#include <cstring>
using namespace std;

static char buffer[2048];

char* readline(void) {
 char* cpy;
 fgets(buffer, 2048, stdin);
 cpy = (char*)malloc(strlen(buffer)+1);
 strcpy(cpy, buffer);
 cpy[strlen(cpy)-1] = '\0';
 return cpy;
}

int main(void) {
 int i;
 char* s;
 s = readline();
 for (i = 0; s[i] != '\0'; i++) {
  cout << s[i] << endl;
 }
 return 0;
}

// バッファ(入力文字をツッコんでおく配列)作成はある程度もうパターンなんで、作成法は暗記しておいた方が良い。
「c++ 文字列を入力して、一文字ずつ表示」の回答画像3
    • good
    • 0

>main関数内で文字列を入れるのはcharで、関数はポインタで書きたいです。


ごめんなさい
書き方が簡潔過ぎましたね
char型の変数一つには一文字しか入りません
「文字列」を入れるには工夫が必要です

習ったことを思い出してみてください
    • good
    • 0

ここが原因だと思っている


とは書いてありますが

なにか問題が起きているのですか?
エラーが出ているのならそのエラーを
思い通りの動作になっていないなら
今なっている動作について書きましょう

ぱっと見言えるのは
文字列を入れるのにchar型の変数でいいのですか?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報