c言語初心者スレ3

  • 1c難民22/06/20(月) 12:55:00

    二回連続で保守し忘れでスレ落としてしまったので、しばらく自分で頑張ろうと思いスレ立てませんでした。先週はどうにかなったのですが、また行き詰ってしまったので、また皆さんの力を借りたいです。

  • 2c難民22/06/20(月) 13:00:26

    char型引数aでアルファベット1文字を受け取り、大文字にして返す関数を作成するやつです
    関数はchar upper(char a)固定で、小文字入力大文字出力はmainでやらなきゃいけないそうです

  • 3二次元好きの匿名さん22/06/20(月) 13:02:45

    文字を数値として見る問題かな?

  • 4c難民22/06/20(月) 13:03:17

    char upper(char a) {
    char s;
    s = a - 32;
    return s;
    }
    int main(void) {
    printf("1文字入力してください\n");
    char a[100];
    scanf("%s", a);
    char d[100];
    d[1] = '\0';
    d[0]=upper(a[0]);
    printf("%sを大文字にすると%s\n", a[0], d[0]);
    return 0;
    }
    aの入力まではできましたが「大文字にすると~」の文が表示されません。char型や大文字への変換も先週何となくでしか理解できてないと思います。

  • 5c難民22/06/20(月) 13:05:57

    >>3

    変換はそうなんですが関数の授業なので関数使いたいです


    あと小文字以外は変更しなくていいのですが、-32使うと小文字以外も変化させてしまう気がします

  • 6c難民22/06/20(月) 13:07:20

    今回こそは完走まで保守していきたいのでよろしくお願いします

  • 7二次元好きの匿名さん22/06/20(月) 13:10:50

    入力するのは1文字なのに配列で宣言してるのは理由があるのかい

  • 8二次元好きの匿名さん22/06/20(月) 13:12:59

    stdio うろ覚えだから間違ってたらごめんだけど 1文字なら getc でよくない
    小文字だけ変換したいなら 'a' <= a <='z'

  • 9c難民22/06/20(月) 13:17:38

    >>7

    あまり理解できてないのでとりあえず文字なら[100]つけたほうがいいかなみたいな

    >>8

    getcはまだ習ってないのでstdioでお願いしま!!

  • 10二次元好きの匿名さん22/06/20(月) 13:27:28

    表示されないのは%sになってるからだろうか

  • 11二次元好きの匿名さん22/06/20(月) 13:28:24

    文字の後 enter おしてる?

  • 12c難民22/06/20(月) 13:34:18

    >>10

    文字の時は%sじゃないのでしょうか

    >>11

    押してます

  • 13二次元好きの匿名さん22/06/20(月) 13:34:50

    >>10

    ほんとだ、%s に a[0] や d[0] を渡してるのか

  • 14二次元好きの匿名さん22/06/20(月) 16:04:47

    %sは文字列chra test[5]="aaa";の場合に printf("%s", test); test[0]ではなくtest
    コードみたら'\0'を代入してるから知っていると思われるがそこを終了として読み取りを終える
    [0]を外す理由はまだ習ってなさそうな範囲なので触れないでおく

    一文字でいいならchar test = 'a'; printf("%c", test);
    また配列でやるならchar test[5] = 'a'; printf("%c", test[0]);
    この二つは一文字しか表示されないので文字列のように'\0'を考えなくてもよい

  • 15c難民22/06/20(月) 16:46:18

    >>14

    頑張ってみます

  • 16二次元好きの匿名さん22/06/20(月) 17:28:27

    すまん書き間違えた
    char test[5]='a';

    chra test[5]="a";
    また
    char test[5];
    test[0]='a';

  • 17二次元好きの匿名さん22/06/20(月) 18:37:11

    ところでスレ画はもうC++で固定なん?
    初見が混乱すると思うけど

  • 18c難民22/06/20(月) 19:31:32

    >>17

    すいません!間違えました…

  • 19二次元好きの匿名さん22/06/21(火) 01:12:00

    もしC++スレが立ったら...

  • 20二次元好きの匿名さん22/06/21(火) 09:07:56

    保守

  • 21c難民22/06/21(火) 10:31:10

    %sを%cに変えたらできました、ありがとうございます!

  • 22c難民22/06/21(火) 12:07:48

    久しぶりに入力した数までの素数を表示が出てきました、復習してきます

  • 23二次元好きの匿名さん22/06/21(火) 13:15:00

    このレスは削除されています

  • 24二次元好きの匿名さん22/06/21(火) 16:26:37

    無知無知ですまんけど
    printfに%sで変数渡してその変数に0が入ると表示やめちゃうんだっけ?

  • 25二次元好きの匿名さん22/06/21(火) 23:45:50

    >>24

    '\0'は文字列の終端ここにきたら呼び込みをやめる

    値としては'\0'と0と同じだから同じ挙動をする

    a[3] = 0;

    a[3] = '\0';

    見つかるまで処理が継続するから書き忘れ注意

オススメ

このスレッドは過去ログ倉庫に格納されています