ベストアンサー ※ ChatGPTを利用し、要約された質問です(原文:MPW-GMでのCのプログラミング) MacのMPW-GMでCのプログラミングについて 2003/06/12 18:23 このQ&Aのポイント MacのMPW-GMでCのプログラミングをする際にエラーが発生しました。program typeでApplicationsとSIOW App.の違いや、conio.hやgetchの代わりになるものについて教えてください。Cのプログラミング初心者のため、助けが必要です。 MPW-GMでのCのプログラミング MacのMPW-GMでCのプログラミングをしていますが、まだ初心者です。Windows上で動いていたCのプログラムを持ってきてMPW-GMのprogram typeでSIOW App.と指定してコンパイルしたところ、conio.h (コンソールからのIO?)というヘッダファイルが見つからないというエラーになりました。この行を消去してコンパイルするとgetchというexternal reference(コンソールからの文字読み込み?)がunsolvedというエラーになりました。そこで教えて頂きたいのですが、 (1)program typeでApplicationsとSIOW App.の違いは 何でしょうか。 (2)conio.hやgetchの代わりになるものがあるのでしょうか。 以上よろしくお願いします。 質問の原文を閉じる 質問の原文を表示する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー toysmith ベストアンサー率37% (570/1525) 2003/06/12 18:54 回答No.1 1) Applicfationsはファイルタイプ'APPL'を持つMacintoshアプリケーションを作成します。 SIOW AppはMPW Shellで動作するコンソールアプリケーションを作成します。 2) 多分1文字入力したいんだと思います。 MPWでコンソールアプリケーションを作ったことがないので想像なんですけど setbuf(stdin,NULL); してから getchar(); でできませんか? 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ パソコン・スマートフォンMac 関連するQ&A C言語で、string.h conio.hを使いたい C言語の勉強を「C machine」というソフトを使ってしているのですが, #include< > ↑ ここに入れるファイル?で、string.h conio.hという のがないみたいでgetch()などが使えません。 そこで、この「string.h」「conio.h」などを導入したいのですがやり方がわからないので誰か教えてください。 linux上でgetchを使いたい linux上でgetch()を使おうと思い、<conio.h>をインクルードしたのですが、未定義のエラーが出てしまいます。どうやら、linuxでは、<conio.h>が無い?みたいなのですが、どうやったら、getch()を使用できるようになるのでしょうか?? C言語プログラミング 台形の面積を求めるプログラムを作りたいのですが、最後のmensekiの出力の仕方がわかりません。printf以降のプログラムを教えてください。 #include<stdio.h> #include<conio.h> void main() { int number1,number2,number3,menseki; printf("上底を入力してください:"); scanf("%d",&number1); printf("下底を入力してください:"); scanf("%d",&number2); printf("高さを入力してください:"); scanf("%d",&number3); menseki=(number1+number2)*number3/2; printf( ここがわかりません getch(); } 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? OKWAVE コラム このプログラムを見てください(C言語) m( _ _ )m 現在乱数を使ったプログラムを作っています。 下のプログラムでコンパイルではエラーがでませんが、実行するとデバッグエラーが出てきます。コンパイラにはbccを使っています。恐らく原因は別の関数でbに値を代入してそれをaに代入しているからだろうと思いますが、なぜこれがいけないのかが分かりません。 #include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> int ran, a=1, b, c; void test(void){ b=8; } void main(){ srand(time(NULL)); a=b;//ここを無くすとなぜかエラーが出ない。 while(1){ ran=rand()%(a*2)+1; switch(ran){ case 1: c=1; break; case 2: c=1; break; case 3: c=1; break; case 4: c=2; break; case 5: c=2; break; case 6: c=3; break; case 7: c=3; break; case 8: c=4; break; } printf("%d",c);printf("何か押してください\n");getch(); } } C言語プログラム したのプログラムでgetch()の代わりにscanf()を使って、入力した数が負なら終了、正なら"次の数を入力してください"と表示してループを続けるプログラムを作りたいのですが、どこを変えればよいのですか? #include<stdio.h> #include<conio.h> void main() { int i=1,sum=0; char c='m'; while(c!='e')//eでない限りwhileループを実行する { sum=sum+i; printf("\n1 kara %d madewo tasuto %d desu.\n",i,sum); i++; printf("nanikakeywo oshitekudasai.owaru tokiha 'e'\n"); c=getch(); } printf("loopwo nukemashita\n"); getch(); } c#コンパイル時のエラー こんばんわ。全くの初心者ですので、よろしくお願いします。 現在、.NET SDKをインストールして、c#でプログラムを作ってみました。 コマンドコンソールウィンドウでcscコマンドでコンパイルしようとしましたところ次のようなエラーが出てコンパイルできません。 「プログラム'***.exe'のエントリポイントが定義されていません。」 これはどういうエラーなのでしょうか。また、どうすれば解決するのでしょうか。 教えていただきたいと思っております。よろしくお願いします。 C言語(while構文) #include<stdio.h> #include<conio.h> void main() { int i=1,sum=0; char c='m'; while(c!='e')//eでない限りwhileループを実行する { sum=sum+i; printf("\n1 kara %d madewo tasuto %d desu.\n",i,sum); i++; printf("nanikakeywo oshitekudasai.owaru tokiha 'e'\n"); c=getch(); } printf("loopwo nukemashita\n"); getch(); } getch()の代わりに、scanf()を使って整数値を入力させ、負の数が入力されたら終了するプログラム(正を入力したら「次の数値を入力せよ」とだして、繰り返す。)を造りたいのですが、どこを変えればよいか教えてください。 Cプログラムが終了しない MacのOSXでMPWを使ってCのプログラミングを始めました。プログラムの最後にreturn 0;を入れているのに実行すると終了しないまま止まってしまいます(エラーは起っていないようです)。今は強制終了させていますが、なぜプログラムが終了しないのでしょうか。またMPWについて詳細に解説されているサイトなどありましたら教えて頂けませんか。 Borland C++ Compiler 5.5 無償 Borland C++ Compiler 5.5 を無償ダウンロードして使おうとしましたが使えません gomi.cppを以下のように作り #include <stdlib.h> #include <stdio.h> #include <conio.h> int main(void) { fprintf("please help me!\n"); getch(); return 0; } binにおいてdosプロンプトから bcc32 gomi としたのですがエラーが出ます 統合開発環境でないので大変です この無償版を使えるようにするにはどうしたらいいのでしょうか? よろしくお願いします C言語に詳しい方・得意な方!!! #include<stdio.h> #include<conio.h> void main() { int i=1,sum=0; char c='m'; while(c!='e') { sum=sum+i; printf("\n1 kara %d madewo tasuto %d desu.\n",i,sum); i++; printf("nanikakeywo oshitekudasai.owaru tokiha'e'\n"); c=getch(); } printf("loopwo nukemashita\n"); getch(); } C++はわかるのですが、Cは全くわけがわかりません!!上のプログラムまでは何とか実行してうまくできたのですが、下の問題はさっぱりわけがわかりません。教えてください? *1 うえのプログラムで使用しているgetch()の代わりにscanf()を使って整数値を入力させる。負の値を入力されたら終了。それ以外の数値が入力されたときは、「tsugino suuchiwo nyuryokuseyo」とメッセージをだして、また次の数値の入力を要求し、負の数が入力されるまで終わらないプログラム。 *2 *1のプログラムに、入力された正の数値をすべて加算していき、ループ終了後にその合計を出力するプログラム。 *3 *2のプログラムで、101以上の数値は加算しないようにするプログラム。 *4 *3のプログラムでいくつ数値が入力されたかをループ終了後に表示するプログラム。 *5 あるクラスのテストの点数(0から100点)の平均をだすプログラム。 C言語での方向キー入力判定 C言語でキーの入力判定をするプログラムを作ってい ます。下の例だとeやエンターを押したときは認識できる のに、方向キー↑を押したときはなぜか無反応です。 コンパイラはボーランドでOSはXPでコンパイルした のですが、何がいけなかったのでしょうか? #include <stdio.h> #include <conio.h> #include <windows.h> void check(void){ int key; key = getch(); switch (key){ case 'e': puts("e"); break; case VK_RETURN: puts("ENTER"); break; case VK_UP: puts("UP"); break; } } int main(void) { while(1){ check(); } return 0; } C言語 kEYの空読み C言語でプログラムを組んでいます。 あるひとつの処理を連続で行い、何かKEYボタンをおすとプログラムが終了するというプログラム なのですが? while(kbhit()) getch(); while(1) { ~~~~~~ if(kbhit()) { getch(); return(1); } }while(c==0); という内容ですが、 if(kbhit())のあとの文面は、KEYが押されると(1)が返されエラーになり処理が中断される ということはわかりますが、 冒頭でのこの部分while(kbhit()) getch(); は、どういった意図の分なのでしょうか? ヤバいパソコンが壊れたかも!?事前に知っておきたい3つの兆候と対策 OKWAVE コラム コンソールAPIの色設定で煮詰まりました。 C++でDOS窓を使ったプログラムを作っています。 コンソールAPIで色設定(青)をして出力を行ったところ、一定の行から別の色(白)に変わってしまいます。 この問題を解決したいと念じ、かれこれニ昼夜考えあぐねております。目はうさぎのやうに真っ赤になってしまいました。是非ともお力添えを頂きたく恐縮ながらお願い申し上げる次第です。 なお、<conio.h>による色設定は代替策として考慮済みです。 環境: OS windows98 コンパイラ C++Builder6 ソース: #include <iostream.h> #include <conio.h> #include <windows.h> void main() { // 出力コンソールのハンドル HANDLE m_hConsoleStdOut; // 出力コンソールのハンドルを取得 m_hConsoleStdOut = ::GetStdHandle (STD_OUTPUT_HANDLE); // 前景色・背景色属性を設定 ::SetConsoleTextAttribute (m_hConsoleStdOut, 1 + (0 << 4)); for(int i=0;i<30;i++) printf("\t%2d hello world・・\n",i); getch(); } C#からDLLの呼び出し方 visual studio 2008 express edition C#3.5 を使用しています。 http://www.hata.cc/docs/wlinee/1.html を参考にC++からではMySub関数を呼び出すことができたのですが、 C#から呼び出そうと次のように記述したのですが、 [System.Runtime.InteropServices.DllImport("a.dll")] extern int WINAPI MySub(int a, int b); 書き終わったときに、MySubの下に赤線がでて「;が必要です」 というエラーが出てしまいます・・・ たぶん「WINAPI」が認識されてないと思うのですが、 どのように記述すればよいのでしょうか? ~C++での記述~ [dllcall.cpp] #include "stdafx.h" #include <windows.h> #include <conio.h> // getch( ) を使用するのに必要 extern int WINAPI MySub(int a, int b); int _tmain(int argc, _TCHAR* argv[]) { int c; c=MySub(9, 3); printf("ans=%d\n",c); getch();// キーが押されるまで待つ return 0; } [a.cpp] __declspec(dllexport)int WINAPI MySub(int a, int b) { return a-b; } conio.h? curses.h? cygwinを使ってCを勉強しています。 キー入力を画面にエコーせずに読み込んだりするために「conio.h」か「curses.h」ないとだめなようで、windows向けとunix向けサンプルプログラムを2種類をコンパイルしてみたのですが、どちらの場合も「conio.h」「curses.h」:No such file or directoryといわれてしまいます。 これはどうしてでしょうか?そもそもどちらのファイルも存在していないということでしょうか? Cプログラミングの質問です。 方程式2.0*pow(10,-15)*pow(38.6,x)-2.73-0.909x=0の解xを二分法により求め、それを”atai=××”と表示させるプログラムを書こうと思っているのですが、エラーがでてしまい、さらにどこを直していいかわかりません。 詳しい方がおられましたら、アドバイスをいただけたらと思います。よろしくお願いいたします。 <エラー内容> 「コンパイルしています... tom.cpp .\tom.cpp(34) : error C2668: 'pow' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照) C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(575): 'long double pow(long double,int)' の可能性があります。 C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(527): または 'float pow(float,int)' C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(489): または 'double pow(double,int)' 引数リスト '(int, int)' を一致させようとしているとき .\tom.cpp(34) : error C2059: 構文エラー : 'サフィックスが無効です。' .\tom.cpp(34) : error C2146: 構文エラー : ';' が、識別子 'x' の前に必要です。 ビルドログは "file://c:\Documents and Settings\satoutakaaki\デスクトップ\file\tom\tom\Debug\BuildLog.htm" に保存されました。 tom - エラー 3、警告 0」 <プログラム> #include "stdafx.h" #include <stdio.h> #include <math.h> double fx(double x); int main (void){ double x1=-1000; double x2=1000; double xn; double y; int i=0; for(i=1;i<100;i++) { xn=0.5*(x1+x2); y=fx(xn); if(y>0) {x1=x1/2+x2/2;} if(y<0) {x2=x1/2+x2/2;} i=i+1; } printf("atai=%f",xn); return 0; } double fx(double x) { double z; z=2.0*pow(10,-15)*pow(38.6,x)-2.73-0.909x; return z; } 何を行っているのか分かりません(C言語) #include <stdio.h> #include <stdlib.h> #include <conio.h> enum transport {car, train, airplane, bus} tp; char trans[][20] = { "車", "電車", "飛行機", "バス" }; int main(void) { printf("キーを押して移動手段を選んでください: "); /* プログラムを実行するたびに新しい乱数を生成する */ while(!kbhit()) rand(); getch(); /* 文字を読み込んで廃棄する */ tp = rand() % 4; printf("%s", trans[tp]); return 0; } 【質問】 上記のプログラムで while(!kbhit()) rand(); getch(); のコードが全体的に何を行っているのか分かりません。 1.「while(!kbhit())」でキーが押されたら繰り返しを終了する。 2.繰り返しが終了するまで「rand();」で乱数を発生し続ける。 ぐらいしか分かりません。 「文字を読み込んで廃棄する」コメントはどういう事なのか分かりません。 教えて頂けないでしょうか? Visual C++ 6.0 で作成したプログラムをVisual C++ 2005 でコンパイルしたい visual C++ 6.0 で作成したプログラムがあります。このソースリストをVisual Studio 2005 Express Edition の Visual C++ 2005 Express Editionでコンパイルしようとしましたが、#include <Windows.h> でエラーになって先に進みません。対応したWindows.hの入手方法教えてください。 それとも、そもそも、Visual C++ 2005 Express Editionでは昔のVC++のプログラムはコンパイルできないのでしょうか? c言語 #include<stdio.h> #include<conio.h> void main() { int i=1,sum=0; char c=\'m\'; while(c!=\'e\')//eでない限りwhileループを実行する { sum=sum+i; printf(\"\\n1 kara %d madewo tasuto %d desu.\\n\",i,sum); i++; printf(\"nanikakeywo oshitekudasai.owaru tokiha \'e\'\\n\"); c=getch(); } printf(\"loopwo nukemashita\\n\"); getch(); } while(c!=\'e\')をwhile(c>0)にして実行したい場合はcharをintにかえて、scanfを使わなければならないのはわかりますが、どこを変えればよいか分かりません。ちなみに、while(c>0)に変えた場合に、正の数を入力した後に、「次の数を入力してください」という文を表示してからくりかえす方法をおしえてください。 プログラミング言語Cの演習 以下のようにプログラミングをしてコンパイルしても特にエラーは無かったのですが・・・、実行しようとするとセグメンテーション違反になってしまいます。誰か分かる方がいたら解答かアドバイス欲しいです。 #include <stdio.h> #include <math.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define MAXOP 100 #define NUMBER '0' #define MAXVAL 100 #define BUFSIZE 100 int getop(char s[]); int getch(void); void ungetch(int c); void push(double f); double pop(void); int sp = 0; double val[MAXVAL]; char buf[BUFSIZE]; int bufp = 0; main() { int type; double op2; char s[MAXOP]; while ((type = getop(s)) != EOF) { switch (type) { case NUMBER: push(atof(s)); break; case '+': push(pop() + pop()); break; case '-': op2 = pop(); push(pop() - op2); break; case '/': op2 = pop(); if (op2 != 0.0) push(pop() / op2); else printf("error: zero divisor\n"); break; case '%': op2 = pop(); if (op2 != 0.0) push(fmod(pop(), op2)); else printf("error: zero divisor\n"); break; case '\n': printf("\t%.8g\n", pop()); break; default: printf("error: unknown command %s\n", s); break; } } return 0; } int getop(char s[]) { int c, rc; float f; while ((rc = scanf("%c", &c)) != EOF) if ((s[0] = c) != ' ' && c != '\t') break; s[1] = '\0'; if (rc == EOF) return EOF; else if (!isdigit(c) && c != '.') return c; ungetc(c, stdin); scanf("%f", &f); sprintf(s, "%f", f); return NUMBER; } void push(double f) { if (sp < MAXVAL) val[sp++] = f; else printf("error: stack full, can't push %g\n", f); } double pop(void) { if (sp > 0) return val[--sp]; else { printf("error: stack empty\n"); return 0.0; } } int getch(void) { return (bufp > 0) ? buf[--bufp] : getchar(); } void ungetch(int c) { if (bufp >= BUFSIZE) printf("ungetch: too many characters\n"); else buf[bufp++] = c; } 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ パソコン・スマートフォン スマートフォン・携帯・タブレット 通信事業者・キャリア パソコン Mac PCパーツ・周辺機器 ソフトウェア Windows カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など