- 締切済み
プログラムの有用無用
↓このプログラムを VISUAL C++ 2008 express editionで コンパイルしても エラーが出てしまいます。。。 #include <stdio.h> void main(void); void main(void) { char c = 'c'; printf("c = '%c'\n", c); if (c >= 'a' && c <= 'z') /* c が英小文字なら真 */ printf("c は小文字です。\n"); else printf("c は小文字ではありません。\n"); if (c >= '0' && c <= '9') /* c が数字なら真 */ printf("c は数字です。\n"); else printf("c は数字ではありません。\n"); if (c == '+' || c == '-') /* c が '+' か '-' なら真 */ printf("c は符号です。\n"); else printf("c は符号ではありません。\n"); } どうしてなのーーー???
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- asuncion
- ベストアンサー率33% (2127/6289)
>#6さん >(6)printf文で%cの前後のシングルコーテーション(')は不要 不要と決めつけることはできないです。 もとの質問者さんは、前後にシングルクォーテーションを付けて出力したかったのではないでしょうか。
- katouka09
- ベストアンサー率50% (130/256)
質問番号:4736317にて、コンパイルのやり方を教えてもらっていますよね? その手順でやった結果が、コンパイルエラーなのでしょうか? だとしたら、あなたが提示したソースに問題があると思います。 質問する際には、問題のソースを全部提示する必要があります。 その上で、自分で解決できない部分を質問したほうがいいです。 あなたが提示したソースの問題点: (1)main関数に対するプロトタイプ宣言は不要 (2)main関数の型はint型である (3)main関数の括弧が閉じられていない (4)char型の変数に対してif文で比較していますが、代入している箇所が無いので比較する意味が無い。(常にcが入力されている状態) (5)エラーメッセージに対応するソースが提示されていない (6)printf文で%cの前後のシングルコーテーション(')は不要 それと、C言語のソースであれば、拡張子が*.cになると思います。 cppの場合は、C++のソースとコンパイラが判断してしまうので、 エラーが出るのでは?
- redfox63
- ベストアンサー率71% (1325/1856)
#1への 補足内容と 質問のコードは一致していないように思います #1への補足では『関数 find』に関して未確定の要素があるのに使用しています といった内容になっていますが質問に『find』に関する記述が見受けられません VC2005(VC8.0)以降はソースの文字コードの標準が『マルチバイト』から『Unicode』に変更になっています 古めのサンプルですと『マルチバイト』を対象に書かれていることが多いと思います プロジェクトのプロパティで『文字セット』を『マルチバイト文字セットを使う』に変更しないとワーニングやエラーに嵐に見舞われる場合があります 文字定数の記述 char mstr[] = "マルチバイト"; char_w wstr[] = L"ユニコード"; といった違いがあります また、セキュリティの観点から _sつきの関数を使うように警告される ことも多いでしょう Ex scanf,printf,strcpyなど ・・・ # _sつきの関数は 引数が多少変更になっているバイがあるので # リファレンス(MSDNなど)で確認しましょう
お礼
すこしむずかしいですが ありがとうございました
- salsberry
- ベストアンサー率69% (495/711)
このプログラムは何かの本やウェブページにあったものでしょうか。 余計なお節介だとは思いますが、今どきmain()関数の型をvoidで宣言するような資料は参考にしない方がいいでしょう。 コンパイルが通っても「正しい」プログラムではありません。
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
プログラムにmain関数があって、printfとかってのを使ってる場合は「コンソールアプリケーション」としてコンパイルしないとダメだ。 「出来上がるアプリケーションの種類」をちゃんと設定して、元になるソースプログラムも「C言語」なのか「C++言語」なのか、ちゃんと設定してやらないと、エラーは消えない。 http://cvwww.ee.ous.ac.jp/vc08prog.html とかよ~く読んで「コンパイル、ビルドする前の、準備の方法」を習得してください。 質問者さんは「コンパイル作業をするのはまだ早い。その前に覚えること、やらないといけないことがいっぱいある」のです。 「VISUAL C++2008をインストールして、サンプルをコピペしてビルドしただけ」でプログラムが動くと思ったら大間違い。世の中、そんなに甘くはありません。覚える事をちゃんと覚えて、やることをちゃんとやらないと、ビルドは成功しませんよ。
お礼
ぼくも 一応勉強はしてます それに コンソールアプリケーションとして つくりました。 それにもとになるげんご は どうみても Cげんごでしょ それに、PICなどのプログラムは メモ帳などでなんどもつくっているんです そのいいかたはないんじゃないですか~~~ まーでも まだ 駆け出しなので はんろんは できませんが すこしショックを受けました、、、、
- zwi
- ベストアンサー率56% (730/1282)
同じ内容の質問で新たな質問をするのは止めてください。 前の回答に補足の形で書き込む事から始めてくださいね。
お礼
聞きたかったら 補足からするんですか==」 知りませんでした これからはそうしま^す
- arain
- ベストアンサー率27% (292/1049)
で、そのエラーメッセージの内容は?
補足
こんな感じなのですが わかりますか??? 1>------ ビルド開始: プロジェクト: 4400, 構成: Debug Win32 ------ 1>コンパイルしています... 1>3300.cpp 1>c:\users\yusuke mitani\documents\visual studio 2008\projects\4400\4400\3300.cpp(8) : error C2143: 構文エラー : ';' が 'end of file' の前にありません。 1>c:\users\yusuke mitani\documents\visual studio 2008\projects\4400\4400\3300.cpp(6) : error C2146: 構文エラー : ';' が、識別子 'find' の前に必要です。 1> c:\users\yusuke mitani\documents\visual studio 2008\projects\4400\4400\3300.cpp(8) : コンパイルされたクラスの テンプレート のインスタンス化 'set<_K,_Pr,_A>' の参照を確認してください 1>c:\users\yusuke mitani\documents\visual studio 2008\projects\4400\4400\3300.cpp(6) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\users\yusuke mitani\documents\visual studio 2008\projects\4400\4400\3300.cpp(6) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\users\yusuke mitani\documents\visual studio 2008\projects\4400\4400\3300.cpp(6) : warning C4183: 'find': 戻り値の型がありません。'int' を返すメンバ関数とみなします。 1>ビルドログは "file://c:\Users\yusuke mitani\Documents\Visual Studio 2008\Projects\4400\4400\Debug\BuildLog.htm" に保存されました。 1>4400 - エラー 4、警告 1 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== ぜひ おねがいします
補足
たぶん 同じソリューションに なんこも、ソースファイルを作り 各々にmain() を使っていたのがいけなかったと思います それに、いろいろな人から おなじような指摘を受けました もう少し試行錯誤してから また質問に来ます 親切にこたえていただいて ありがとうございました。