visual studio 2013のエラー|エラーが出たなんですけど、原因がわかりません

このQ&Aのポイント
  • visual studio 2013のエラーが発生しました。具体的には、識別子 'wa' の前に必要な ';' がなく、構文エラーが発生しました。
  • IntelliSenseによると、行末に必要な ';' が欠けているため、エラーが発生しました。
  • visual studio 2013でプログラミング中にエラーが発生し、識別子 'wa' の前に ';' が必要とのエラーメッセージが表示されました。原因がわからないため、解決方法を知りたいです。
回答を見る
  • ベストアンサー

visual studio 2013のエラー

#include <stdio.h> int main(void) { int n1, n2; int wa; puts("二つの整数を入力してください。"); printf("整数1:"); scanf_s("%d", &n1); printf("整数2:"); scanf_s("%d , &n2") wa = n1 + n2; printf("それらの和は%dです。\n", wa); return 0; } エラー 1 error C2146: 構文エラー : ';' が、識別子 'wa' の前に必要です。 c:\users\伸之\documents\visual studio 2013\projects\training\source.cpp 10 1 training 2 IntelliSense: ';' が必要です c:\Users\伸之\Documents\Visual Studio 2013\Projects\training\Source.cpp 9 2 training のエラーが出たなんですけど、原因がわかりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

まずは、エラーメッセージどおり、 printf("整数2:"); scanf_s("%d , &n2") ←【ココ】 wa = n1 + n2; にセミコロンが無いからでは。 その他、変な所はありますが。 慣れないうちは、素直に1行1ステートメントで書いた方がいいと思う。

tsujinobu96
質問者

お礼

本当にそうですね、もっと素直にコードを書くべきと思いました。 回答ありがとうございます。

その他の回答 (1)

  • maiko0318
  • ベストアンサー率21% (1483/6970)
回答No.2

printf("整数1:"); scanf_s("%d", &n1); printf("整数2:"); scanf_s("%d , &n2") この2行、微妙に違いますよね。既出とは別に。

関連するQ&A

  • visual studio 2012エラー

    前使っていたPCで作成したプロジェクトを新しいPCに移動してビルドしてみると 2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(42,5): error MSB8020: The builds tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found. To build using the v100 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". Install Visual Studio 2010 to build using the Visual Studio 2010 build tools. というエラーが出ます。 わかる方いますでしょうか?

  • コンパイルエラー

    Borlnd C++ compilerでコンパイルしたのですが、どうしてもエラーがでてしまいます。エラーは、不正な文字’’(0×8140)(関数 main) エラーE2206 文字' ' (0×8140)(関数 main) エラーE2206と二つ同じエラーがあると表示されます。本当に分からないので力を貸したください。お願いします。 /*読み込んだ二つの整数値の大きい方の値を求めて表示(条件演算子)*/ #include <stdio.h> int main(void) { int n1, n2, max; puts("二つの整数を入力してください。");   printf("整数1 : "); scanf("%d", &n1); printf("整数2 : "); scanf("%d", &n2); max = (n1 > n2) ? n1 : n2; printf("大きい方の値は%dです。\n", max); return 0;

  • C++ プログラミング

    連立方程式の逆行列と解を出そうとしたのですが /*n=4と定義nは元の数*/ #define n 4 int main() { /*係数マトリクスAと単位マトリクスと右辺ベクトルの定義*/ double a[n][n+5]={{4,1,3,2,1,0,0,0,23}, {1,4,3,3,0,1,0,0,30}, {5,5,10,5,0,0,1,0,65}, {4,4,2,6,0,0,0,1,42}}; double x,y; int i,j,k; /*#1ピボットの演算を行うためのループ*/ for(k=0;k<n;k++) { /*ピボット係数*/ x=a[k][k]; /*#2ピボットをにするための演算を行うためのループ*/ for(j=k;j<n+5;j++) /*ピボット行をxで割る*/ a[k][j]=a[k][j]/x; /*#3ピボット列の掃き出しを行うためのループ*/ for(i=0;i<n;i++) { /*#4iがkではないとき*/ if(i!=k) { y=a[i][k]; /*#5ピボット以外をにする演算を行うためのループ*/ for(j=k;j<n+5;j++) a[i][j]=a[i][j]-y*a[k][j]; } } } /*結果を表示*/ printf("係数マトリクスAの逆行列を表示\n"); for(i=0;i<n;i++){ for(j=4;j<n+4;j++){ printf("a[%d][%d]=%f",i+1,j-3,a[i][j]); } printf("\n"); } printf("連立方程式の解を表示\n"); for(i=0;i<n;i++) printf("x%d=%f\n",i+1,a[i][n+4]); return 0; このプログラムを打って 1>z:\win\personal\visual studio 2008\projects\課題2.cpp(35) : error C3861: 'printf': 識別子が見つかりませんでした 1>z:\win\personal\visual studio 2008\projects\課題2.cpp(38) : error C3861: 'printf': 識別子が見つかりませんでした 1>z:\win\personal\visual studio 2008\projects\課題2.cpp(40) : error C3861: 'printf': 識別子が見つかりませんでした 1>z:\win\personal\visual studio 2008\projects\課題2.cpp(42) : error C3861: 'printf': 識別子が見つかりませんでした 1>z:\win\personal\visual studio 2008\projects\課題2.cpp(44) : error C3861: 'printf': 識別子が見つかりませんでした 1>z:\win\personal\visual studio 2008\projects\課題2.cpp(46) : fatal error C1075: 左側 中かっこ '{' に対応するものが 'z:\win\personal\visual studio 2008\projects\課題2.cpp(4)' で見つかる前に EOF が検出されました。 とエラーがでました.printfはちゃんと定義されてると思うんですが何がおかしいのでしょうか・・・?

  • Visual C++ Express Edition 警告に関して

    Visual C++ Express Editionを導入して最近Cを学び始めたのですが、 Visual C++ Express Editionでコンパイルした際に警告がたくさん でてしまいます。エラーさえなければ実行はできるようですが、できれば警告もなくしないです。以下がソースファイルです。 #include <stdio.h> int main(void) { int x,y,z; z=1; for(;z == 1;){ printf("数値を入力してください:\n"); scanf("%d",&x); printf("数値を入力してください:\n"); scanf("%d",&y); printf("加算すると%d\n減算すると%d\n" "乗算すると%d\n除算すると商%dは余りは%d\n",x+y,x-y,x*y,x/y,x%y); printf("計算を続けますか?\n続けなるならば1を押してください:"); scanf("%d",&z); } return(0); } コンパイルをすると警告として以下がでました。 c:\program files\microsoft visual studio 8\vc\include\stdio.h(295) : 'scanf' の宣言を確認してください。 今回の例の場合の警告の解決方法と一般的に警告をどのように解決をすればいいのか(エラーだったら文法的に間違えているのだが、警告だと?)教えてください。

  • c言語でエラーが出ます。

    以下のプログラムでコンパイルするとエラーが出ます。どこが間違えていますか? #include <stdio.h> int main(void) { int vx,vy; puts("二つの整数を入力して下さい。"); printf("整数vx:"); scanf("%d", &vx); printf("整数vy:"); scanf("%d", &vy); printf("vx+vy=%d\n", vx+vy); printf("vx-vy=%d\n", vx-vy); printf("vx*vy=%d\n", vx*vy); printf("vx/vy=%d\n", vx/vy); printf("vx%%vy=%d\n", vx%vy); return(0); } コンパイラーはmicrosoft visual studio 2012です。エラー表示は「error 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. 」と出ます。 8行目のscanfの文にエラーと出ますがどこが間違っているか分かりません。どなたか分かる方教えて頂けますか?

  • プログラムの勉強でわからないところがあります

    明解C言語の入門編、演習4-3 二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作成するものなのですが、うまくいかなく困っています。 他の書き方でやれば普通にいけると思うのですが、どうしてこれだとできないのかがわからないとすっきりしなくって・・・ 以下のようなプログラムで試しています。 #include <stdio.h> int main(void) { int n1,n2,n3,n4; puts("二つの整数を入力してください"); printf("整数1:"); scanf("%d",&n1); printf("整数2:"); scanf("%d",&n2); n3=(n1>n2) ? n2 : n1; n4=(n1>n2) ? n1 : n2; printf("%d以上%d以下の全整数の和は", n3,n4); int num=n1; int sub=n2; int wa; printf("num=%d sub=%dで",num,sub); do{ if (n1>n2) { wa=num+sub; /* 大きいほうの数(num)にsub(小さい方の数+0,2,3,4・・・)を足していく */ sub=sub+1;/* ここを通るたびにsubに+1 */ printf("%d",wa);} else { wa=sub+num; num=num+1; printf("%d",wa);} }while(sub!=n1 || num !=n2); /* 小さい方の数に1足していったものが大きい方の数と等しくなったら0を生成し終了 */ printf ("です\n"); return 0; } このプログラムで試すと、延々と計算をし続けていってしまうのです。 whileあたりがおかしいのかと思ったのですが、どこがおかしいのかわからなくって・・ whileは、中の数字が0を生成する場合止まる、というものだったと思うので、小さい方の数字に1ずつ足していって、大きい方の数字と等しくならない限り続けるように作ったつもりなのですが・・・ どこがおかしいのか教えて頂けると嬉しいです。 それとワガママなお願いなのですが、できれば、正答のようなものは書かないでもらえると助かります、どこが間違いなのかだけ教えて頂いて、後はなんとか自分の力でこなしてみたいので・・・ 自分勝手なお願いですが、よろしくお願いします。

  • C言語の問題でわからないところがあります

    先ほども似たような内容で質問させて頂いたのですが、もう一度質問させてください。 最近C言語を勉強し始めたのですが、わからないところがあります。 二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の整数を全て加えた値を表示するプログラムを作成するものなのですが、うまくいかなく困っています。 他の書き方でやれば普通にいけると思うのですが、これだとできない理由がわからないと、もやもやしてしまうので・・・・ プログラムは以下の通りです #include <stdio.h> int main(void) { int n1,n2,n3,n4; puts("二つの整数を入力してください"); printf("整数1:"); scanf("%d",&n1); printf("整数2:"); scanf("%d",&n2); n3=(n1>n2) ? n2 : n1; n4=(n1>n2) ? n1 : n2; printf("%d以上%d以下の全整数の和は", n3,n4); int num=n3; /* numの最初の値は小さい方の値 */ int wa=0; /* n3が小さい方の数、n4は大きい方の数 */ do{ if (n1>n2) { wa=n4+num; /* 大きいほうの数(num)にsub(小さい方の数+0,2,3,4・・・)を足していく */ num=num+1;/* ここを通るたびにsubに+1 */ printf("%d",wa);} else { wa=n4+num; num=num+1; printf("%d",wa);} }while(num<n4); /* num<n4を満たさない=numが大きいほうの数よりも大きくなったらループを終了 */ printf ("です\n"); /* ですっす */ return 0; } これで大きい方に37、小さいほうに28と入力すると656667686970717273ととても大きな数値になってしまいます。 ループが間違っているのでしょうか? whileは whileの後の()の中身の条件を満たしているとにループする、と認識しているので、numが大きい方の数値より大きくなったとき、ループを終了するようにしているつもりです。 ここがどこか間違っているのでしょうか・・・? それから、初期化というのもいまいち理解していないのですが、intで宣言するときに、中に数値を格納しておく、という物だと思っています。 宣言の後にprintf("%d",num);などで確認すると、代入できているようなので、これは間違っていないと思うのですが・・・・、 間違っているところがざっとみて解りましたら、回答頂けるとありがたいです。 C言語を始めたばかりなので、できれば簡単に説明して頂けるとありがたいです。

  • コンパイル後アプリケーションエラー・・・

    #include<stdio.h> void main(void) { int n1, n2, sum; printf(\"整数n1を入力して下さい:\"); scanf(\"%d\", n1); printf(\"整数n2を入力して下さい:\"); scanf(\"%d\", n2); sum = n1 + n2; printf(\"n1とn2の合計は%dです\\n\", sum); } と入力しコンパイルしたらアプリケーションエラーとなりました。何が原因なのでしょうか? 本に書いてあるとおりに入力し、何度も見直したのですが… あとsum = n1 + n2と書いたのですが、sum=n1+n2でも問題はないのでしょうか? こんな初歩の初歩のことでスミマセン。 宜しくお願いします。

  • 見た目は同じソースなのにエラーがでてしまう。

    初めての質問です。 私は初心者で、Visual C++ 2005 Express Editionを使っています。 最近、C++を勉強しようとあるホームページの『0からのゲームプログラミング』という講座を見始めていて、そこの構造体の回の所のサンプルをスキルアップのため手書きで書いてデバックをしてみたらエラーが出てしまいました。 ↓このページがそうです。 http://www.plustarnet.com/aspil/Programming/ ↓上のページの構造体の回のリンクです。(問題のサンプルは下の方です。) http://www.plustarnet.com/aspil/Programming/c24.htm そこまではいいんですがそのエラーを見ても全然意味が分からなく、その講座のサンプルと自分のソースを見比べてみても 自分の目で見る限りではスペルミスなどはひとつもありませんでした。そこで、サンプルをそのままコピーしてデバックしてみると今度はちゃんと正常に実行されます。そこで質問なのですが、見た目はまったく同じソースなのにエラーが出ることはありえるのでしょうか? それとも、やはり自分が間違って書いているのでしょうか? 正直言うところいくら見直してもエラーが出るのでまるでVisual C++が自分のプログラムだけを拒否しているかのように思い始めているほどです。ちなみに以下が自分で書いたプログラムです。 //この行のすぐ下の行からです。 #include <stdio.h> #include "Main.h" // 構造体宣言 tagCharacter g_Hero; // 勇者 tagCharacter g_Satan; // 魔王 // 関数のプロトタイプ宣言 void HeroStatus(void): void SatanStatus(void); void main(void) { g_Hero.lLife = 35; g_Hero.lStrength = 15; g_Satan.lLife = 305; g_Satan.lStrength = 105; HeroStatus(); SatanStatus(); } // 勇者のステータスを表示 void HeroStatus(void) { printf("勇者のライフ:%d\n", g_Hero.lLife); printf("勇者の力 :%d\n\n", g_Hero.lStrength); } // 魔王のステータスを表示 void SatanStatus(void) { printf("魔王のライフ:%d\n", g_Satan.lLife); printf("魔王の力 :%d\n\n", g_Satan.lStrength); } //上の行まで ※著作権が心配です・・・ そして以下が自分のプログラムででたエラーです。 ※アドレスの最初のほうは消しています。 ※C++のインストール場所はデフォルトにしています。 1>------ ビルド開始: プロジェクト: test12, 構成: Debug Win32 ------ 1>コンパイルしています... 1>Main.cpp 1>\visual studio 2005\projects\test12\test12\main.cpp(11) : error C2062: 型 'void' は不要です。 1>\visual studio 2005\projects\test12\test12\main.cpp(13) : error C2062: 型 'void' は不要です。 1>\visual studio 2005\projects\test12\test12\main.cpp(14) : error C2630: ';' はコンマで区切られたリストで使用しなければなりません。 1>\visual studio 2005\projects\test12\test12\main.cpp(22) : error C3861: 'SatanStatus': 識別子が見つかりませんでした 1>\visual studio 2005\projects\test12\test12\main.cpp(27) : error C2084: 関数 'void HeroStatus(void)' は既に本体を持っています。 1>\visual studio 2005\projects\test12\test12\main.cpp(10) : 'HeroStatus' の前の定義を確認してください 1>\visual studio 2005\projects\test12\test12\main.cpp(34) : error C2365: 'SatanStatus' : 再定義; 以前の定義は '以前は不明な識別子' でした。 1>ビルドログは "file://\Visual Studio 2005\Projects\test12\test12\Debug\BuildLog.htm" に保存されました。 1>test12 - エラー 6、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== 以上です。今回は初めての質問ということで書き言葉や文面を不快に思うかもしれないですがそこの所はお許しください。非常に長文の所も お許しください。 最後に何もわからない自分の質問を読んでいただきありがとうございました。

  • ヒントをください!

    ある課題があるんですが、 「ユーザに好きな整数を10個入力させ、その最小値と最大値を出力するプログラムを書いてください。if文を使ってください。」 このプログラムを作る際のヒントをください。ぜんぜんわからないので。。。 答えは作ってから見たいので。。。 よろしくおねがいします。 10個数字を入力させるプログラムは作りました。 #include <stdio.h> int main(void){ int c,e,r,u,t,v,d,a,p,n; printf("好きな整数を10個入力してください。\n"); printf("整数を入力:"); scanf("%d",&c); printf("整数を入力:"); scanf("%d",&e); printf("整数を入力:"); scanf("%d",&r); printf("整数を入力:"); scanf("%d",&u); printf("整数を入力:"); scanf("%d",&t); printf("整数を入力:"); scanf("%d",&v); printf("整数を入力:"); scanf("%d",&d); printf("整数を入力:"); scanf("%d",&a); printf("整数を入力:"); scanf("%d",&p); printf("整数を入力:"); scanf("%d",&n); return 0; } このようになりました。

専門家に質問してみよう