こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Visual Studio C++のデータ入力

C言語を一から勉強しています。
Visual Studio C++を使ってプログラムを入力していて、デバッグの際にscanfでテストデータを入れたいのですが、入力の方法が分かりません。
どうやったらよいのでしょうか。
Visual Studio 2019で、C++のコンソールアプリケーションというものを使っています。

投稿日時 - 2020-05-13 06:46:38

QNo.9747945

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

>変数(?)に代入するのではなく、入力でできないかな?と思ったのですが。
入力はするが、どこにも格納されない?物を望んでいるのであれば、
ダミーの変数に対して、scanf(_s)をすればいいだけかと。

>例えば、あらかじめ「10 20 30 50」といったデータを用意しておいて、コンパイル時に投入してくれる、みたいな。

#2さんが書いてくれたものを拡張すればいいだけです。
#ifdef _DEBUG
 int a=4;
 int b=5;
#else
 int a=2;
 int b=3;
#endif
配列だろうが、定数だろうが、これで、コンパイル時に
セットした状態にできますので、あとは応用でどうにでもなりますよ!

投稿日時 - 2020-05-13 13:01:01

お礼

うーん、なかなか難しいですね。
結局、Visual C++を使って、デバッグの時にコンソールから手で入力するようにしました。
ありがとうございました。

投稿日時 - 2020-05-29 14:59:45

ANo.3

お使いの処理系では
scanf
のかわりに
scanf_s
を使う必要があるかもしれません。

投稿日時 - 2020-05-13 07:39:57

お礼

scanfは使えないのですね。
ありがとうございました。

投稿日時 - 2020-05-29 14:56:05

ANo.2

例えば、

int main(){
 int a=2;
 int b=3;

#ifdef _DEBUG
 printf("a="); scanf("%d", &a);
 printf("b="); scanf("%d", &b);
#endif

 int c = a + b;
 printf("c=%d", c);
}

だとか?

投稿日時 - 2020-05-13 07:39:04

お礼

ありがとうございます。
変数(?)に代入するのではなく、入力でできないかな?と思ったのですが。
言葉で説明するのが難しくて申し訳ないです。

例えば、あらかじめ「10 20 30 50」といったデータを用意しておいて、コンパイル時に投入してくれる、みたいな。
うまく伝えられなくて申し訳ないです。

投稿日時 - 2020-05-13 11:06:29

ANo.1

サンプルコードです。

#include <iostream>
using namespace std;

typedef void (*func)(int a, int b, int *c, int *d);

void add(int a, int b, int *c, int *d)
{
*c = a + b;
}

void sub(int a, int b, int *c, int *d)
{
*c = a - b;
}

void mul(int a, int b, int *c, int *d)
{
*c = a * b;
}

void div(int a, int b, int *c, int *d)
{
*c = a / b;
*d = a % b;
}

void input(int *a, int *b)
{
cout << "1個目の整数を入力してください。\n";
scanf("%d", a); // 1個目のテストデータ
cout << "2個目の整数を入力してください。\n";
scanf("%d", b); // 2個目のテストデータ
}

void answer(int a, int b, func *f, int sz)
{
const char *op[] = { "+", "-", "*", "/" };
int c, d;

for (int i = 0; i < sz; i++) {
f[i](a, b, &c, &d);
cout << a << op[i] << b << "=" << c << "です。";
(i != sz - 1) ? cout << "\n" : cout << "あまりは" << d << "です。\n";
}
}

int main(void)
{
func f[] = { add, sub, mul, div };
int a, b;

input(&a, &b);
answer(a, b, f, sizeof(f) / sizeof(f[0]));
return 0;
}

投稿日時 - 2020-05-13 07:37:11

お礼

難しくて理解できませんでした。
せっかくお答えいただいたのに申し訳ありません。
もっと勉強します。

投稿日時 - 2020-05-29 14:55:18

あなたにオススメの質問