ページ 11

C++ クイズプログラム

Posted: 2011年8月07日(日) 21:16
by nonoki
問題に対する解決法が皆目見当もつかないため、ご指導賜りに参りました。
文字列を記入し、判定するクイズプログラムを造っているのですが、
c:\users\rain\documents\visual studio 2010\projects\プログラミング実習\プログラミング実習\main.cpp(10): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(304) : 'scanf' の宣言を確認してください。
c:\users\rain\documents\visual studio 2010\projects\プログラミング実習\プログラミング実習\main.cpp(12): error C2015: 定数の文字数が多すぎます。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

このような警告文とERROR文が出てしまい、作動しません。
ぜひ、ご指導をお願いたします。

コード:

#include<iostream>
#include<stdio.h>
using namespace std;



int main(){
cout<<"あなたのお名前は?";
cout<<"nonokiと入力してください";
int a;
scanf("%s",&a);

if(a=='nonoki')
	cout<<"正解";
else
	cout<<"不正解";



return 0;
}

Re: C++ クイズプログラム

Posted: 2011年8月07日(日) 21:20
by みけCAT
%sなのにint型の変数に入力してはいけません。
int a;→char a[10000];とでもしてください。
このばあい&はいりません。
scanfでは入力できる最大文字数を設定しておくと安全です。
a=='nokori'もstrcmp(a,"nokori")==0としてください。
この場合string.hもインクルードしてください。

コード:

#include<iostream>
#include<stdio.h>
#include <string.h>
using namespace std;
 
 
 
int main(){
cout<<"あなたのお名前は?";
cout<<"nonokiと入力してください";
char a[10000];
scanf("%9999s",a);
 
if(strcmp(a,"nonoki")==0)
    cout<<"正解";
else
    cout<<"不正解";
 
 
 
return 0;
}

Re: C++ クイズプログラム

Posted: 2011年8月07日(日) 22:44
by nonoki
ありがとうございました。無事解決いたしました。
strcmpについても調べてみます。

Re: C++ クイズプログラム

Posted: 2011年8月08日(月) 17:26
by ISLe
C++ならstring型の変数にstd::cinで取り込んだほうが良いのではないでしょうか。

コード:

#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;

int main()
{
	cout << "あなたのお名前は?" << endl;
	cout << "nonokiと入力してください" << endl;
	string a;
	cin >> a;

	if (a == "nonoki")
		cout << "正解" << endl;
	else
		cout << "不正解" << endl;

	return 0;
}