C++ クイズプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nonoki

C++ クイズプログラム

#1

投稿記事 by nonoki » 14年前

問題に対する解決法が皆目見当もつかないため、ご指導賜りに参りました。
文字列を記入し、判定するクイズプログラムを造っているのですが、
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;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 14年前

%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;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

nonoki

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

#3

投稿記事 by nonoki » 14年前

ありがとうございました。無事解決いたしました。
strcmpについても調べてみます。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

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

#4

投稿記事 by ISLe » 14年前

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;
}

閉鎖

“C言語何でも質問掲示板” へ戻る