プロが教える店舗&オフィスのセキュリティ対策術

プログラミング初心者です。
getcharが使えなくて
困っています。
下記プログラムに"#define putchar(c) putc(c, stdout)"と”#define getchar( ) getc(stdin)”も加えたりしているのですが、結果"。"や"1"などがでてきます。(下はサンプルプログラムです)
どなたか、ご教授よろしくお願いします。





#include <stdio.h>

void main(void);

void main(void)
{
int c;

for (c = 'A'; c <= 'Z'; c++) /* c の値は 'A' から 'Z' まで変化 */
putchar(c); /* 1文字画面に出力 */

printf("\n");

for (c = 'Z'; c >= 'A'; c--) /* c の値は 'Z' から 'A' まで変化 */
putchar(c); /* 1文字画面に出力 */

printf("\n\n");

printf("アルファベットを入力して下さい\n");
printf("eを入力するとループからぬけます\t");

while ((c = getchar( )) != EOF) { /* 文字の入力 */
putchar(c);
if (c == 'e') /* 入力された文字が 'e' なら */
break; /* ループから抜ける */
}
}

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

  • うーん・・・

    返信ありがとうございます

    はい、なにもしないので"。"や"1"があらわれます。
    ” main の返り値が void”  ”int main()”でも実行したのですが結果は同じでした。

    Ruby になっていたんですね! 初の質問だったのでよくわからなかったです
    その指摘もありがとうございます

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/02/07 17:37
  • うーん・・・

    前回コンパイル時は"#define getchar( ) getc(stdin)"と書いてコンパイルしてい
    たかもしれないです。

    お世話になります。

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/02/08 18:18

A 回答 (4件)

#Codeが


https://www.microsoft.com/ja-jp/store/p/code/9nb …
これだとすると

> #Code is an online compiler

ってあるから、最近流行りの paizaとかideoneとかみたいな感じなのではないでしょうか。
だとすると、入力は、通常のオフラインでの実行とは違っていても不思議ではありません。
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
今はオンラインのコンパイラが流行っているんですね。

提供元のサイトでは解決方法が見当たらなかったので
サポートにメールで連絡できるようなので連絡してみます!

重ねてありがとうございました

お礼日時:2017/02/10 20:14

「やはり"getchar"のほうは使えません」ということだけど, #2 のプログラムでもやっぱり「使えない」んでしょうか? そうだ

として, 具体的には何がどうなって「使えない」んでしょうか?
この回答への補足あり
    • good
    • 0
この回答へのお礼

#2のプログラムでは前回はコピぺでそのままコンパイルできたと思うのですが、
今回またコンパイルしなおしたところエラーが表示され、
"void main(void)"を"int main(void) "
にしたところエラーが表示されずコンパイルできたのですが
入力ができません。
表示は文字化けを除けば正常に表示されていると思います。

お礼日時:2017/02/08 18:08

いちおう念の為ですが, OS とコンパイラのバージョン, 及び「プログラムを作ってから実行するまでの手順」を書いておいてもらえるとうれしいなと思いつつひょっとして.



例えばですが
#include <stdio.h>

int main(void)
{
int c;

for (c = 'A'; c <= 'Z'; c++) /* c の値は 'A' から 'Z' まで変化 */
putchar(c); /* 1文字画面に出力 */

printf("\n");

for (c = 'Z'; c >= 'A'; c--) /* c の値は 'Z' から 'A' まで変化 */
putchar(c); /* 1文字画面に出力 */

printf("\n\n");

printf("Input alphabet\n");
printf("e for exit\t");

while ((c = getchar( )) != EOF) { /* 文字の入力 */
putchar(c);
if (c == 'e') /* 入力された文字が 'e' なら */
break; /* ループから抜ける */
}
return 0;
}

だったらどうなりますか?
    • good
    • 0
この回答へのお礼

tacosanさん返信ありがとうございます。

プログラムは手探り探索状態なので助かります



OSはwindows10、
エディタはwindowsストアの"#Code"というフリーで手に入れたものです。
バージョンはv.1.1.6 -Added option for editor font size
だと思います。

上記のコードでコンパイルさせていただきましたら
"ABCD……XYZ
ZYXW……DCBA
input alphabet
e for exit"
と出ました。

コンパイルするときは
"Language: C"
"Console Input: Off"
でコンパイルしています

サイトを2つほど見て
"getchar"と"putchar"を使ってみようとしたのですが、
やはり"getchar"のほうは使えません。

お礼日時:2017/02/08 14:00

カテゴリーが Ruby になってるのは気づいてるかなぁ....



さておき, 「結果"。"や"1"などがでてきます」というのは「何も入力しないのにそういうやつらが勝手にばかばか現れる」ってことでいい?

あとなんで main の返り値が void?
この回答への補足あり
    • good
    • 0
この回答へのお礼

重ねてですが返信ありがとうございました

初心者なので猫のコードでもかりたいくらいなので助かります

お礼日時:2017/02/08 13:43

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