アプリ版:「スタンプのみでお礼する」機能のリリースについて

大学でc言語を習い始めました。
で、出た課題が、
「キーボードから入力された文字列の各文字の次に「*」を挿入して、出力する。」
というものです。
それで、自分は以下のようにしたのですが、うまくできません。
何がだめなのか、どうしたらよいのか教えてください。
お願いします。

#include <stdio.h>

int main(void)
{
char str[101];
int i;

printf("入力してください\n");
scanf("%c", str);

for(i=0; str[i] !='\0'; i++){
printf("%c*", str[i]);
}


return 0;
}

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

  • aaaa
    と入力した場合
    a*a*a*a*
    と出力されると思ったのですが、
    a*
    でおわります。

      補足日時:2020/06/15 19:18

A 回答 (5件)

scanf("%s", str);


が正しいです。
関数の仕様を再度確認しましょう。
    • good
    • 1
この回答へのお礼

ありがとうございました

お礼日時:2020/06/16 00:31

コメントだけ>#4.



・scanf の返り値を変数に入れてるくせに使っていないのはおかしい (結果として危険なプログラムになっている)
・<ctype.h> を #include した意味がない (人に見せるプログラムとしてはいまいち)
・全体として「だったら getchar でいいのでは」感が強い
    • good
    • 1
この回答へのお礼

ありがとうございました。

お礼日時:2020/06/16 00:32

こんな感じかな・・・



#include <stdio.h>
#include <ctype.h>
int main(void)
{
    char str;
    int i;
    printf("入力してください\n");
    for (i = scanf("%c", &str); str != '\n'; i = scanf("%c", &str)) 
        printf("%c*", str);
    return 0;
}
    • good
    • 1
この回答へのお礼

ありがとうございました

お礼日時:2020/06/16 00:32

本当はそこから「なにが悪いのか」を考えてほしいんだけどね....



厳密にいうと「入力された文字列」の「文字列」ってなんだ, って話もあるよ. 例えば
abc xyz
は「文字列」ですか? あるいは
abc
x
yz zzx
は?
    • good
    • 1

「うまくできない」というのは, 具体的には何がどう「うまくできない」のですか?

    • good
    • 1

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