• 締切済み

C言語の質問

授業で習ったgotoxy();やclrscr();をMicrosoft visual studio2019で使おうとしたのですが、識別子は認識されませんとエラーが起こります。 ネットでいろいろ調べたところもうこれらの関数は対応していないらしいのですが、代わりになる関数が出てきません。 何か代わりになるような関数を教えていただけないでしょうか。

みんなの回答

  • kzr260v2
  • ベストアンサー率48% (794/1630)
回答No.3

Microsoft C/C++ コンパイラ (MSVC) は、ISOのCと互換性がありますが、厳密に準拠しているわけではないようです。以下はMSからの資料です。 https://docs.microsoft.com/ja-jp/cpp/build/walkthrough-compile-a-c-program-on-the-command-line?view=msvc-160 とはいえ、ISOでもgotoxyは廃止されているようですから、利用された授業は、とても古い環境でコンパイルしていたか、独自にライブラリを読み込んでコンパイルしていたのかもしれません。(ざっとGoogle検索してみたところ、WindowsではなくLinux向けならばgotoxy対応のライブラリはあるようです) ※ gotoxyは出力文字位置の指定で、clrscrは画面クリア、といったあたりです。コマンドラインアプリで、画面の表示体裁を整えることは、それほど重要ではないはずなので、体裁を無視した設計に調整しなおすのもひとつの方法です。 ※ Windows10のProfessional以上のエディションならば、Linuxを実行しやすくなっています。この機能は、Windows System for Linux(WSL)という名称で、Microsoftの正式なものです。 そしてGCCコンパイラで、ncursesライブラリを利用するよう記述したソースコードなら、gotoxyは通りますし、実行もLinuxでなら行なえるはずです。 どうしてもというなら、このような方法もあります。 以上、参考にならなかったらごめんなさい。

全文を見る
すると、全ての回答が全文表示されます。
  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.2

それらま関数はC言語の標準関数ではありません。 ですからVisualC++/C#でコンパイルエラーになるのは当たり前です。 「対応していない」のではなく「そういうライブラリをしていた」となります。 C言語には元々そういう関数がないのですから自分で用意するしかありません。 関数名からの想像ですが、コマンドプロンプト用の関数でしょうか? 指定の座標に文字を表示するための関数がgotoxy()、表示をクリアするのがclrscr()?もしかしたらClearScreenの略かな? そういうのはエスケープシーケンナスで実現できるのですが、WindowsのNT系では使えなくなったと思っていたので使おうとは思いません。Wiondows10の最新環境ではCMD.exeではなくPowerShellの使用が推奨されていたはずです。PowerShellでエスケープシーケンスが使えるのかな?

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

gotoxy();やclrscr();を これらのプロトタイプとソースを持ってきて、 VSでコンパイルすればいいだけです。 それが無理なら、 http://7ujm.net/etc/esc.html このエスケープシーケンスを 同じ名前で関数化して、プロトしてください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語のPathFileExistsについて

    visual studio 2010、C言語でPathFileExistsを使って ファイル有無のチェックをしようと試みましたが、 コンパイルエラーになってしまいました。 環境はwindowsXP、SP3です。 参考にしたいくつかのサイトでは、visual studio 2010ではPathFileExistsを使って ファイル有無をチェックできると書いてあったのですが、 visual studio 2010でもC言語だとPathFileExistsは使えないのでしょうか? TEST.C #include <stdio.h> #include <shlwapi.h> int main() {   char path[128];   sprintf( path, "c:\\tmp.txt" );   if ( PathFileExists(path) ){     printf("ファイル有\n");   }   else{     printf("ファイル無\n");   }   return 0; } TEST.OBJ : error LNK2019: 未解決の外部シンボル __imp__PathFileExistsA@4 が関数 _ main で参照されました。 TEST.EXE : fatal error LNK1120: 外部参照 1 が未解決です。 NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\BI N\link.exe"' : リターン コード '0x460' Stop.

  • OpenCVを使いたいのですが

    Visual C++ 2010にOpenCV2.4.3の導入し、設定を終えたのでプログラムをビルドさせるとエラーが吐き出され動作しません。 どなたか原因がわかる方はいらっしゃらないでしょうか? 【プログラム】 #include<stdio.h> #include<openCV2/opencv.hpp> #ifdef _DEBUG #pragma comment(lib,"opencv_core243d.lib") #pragma comment(lib,"opencv_highgui243d.lib") #pragma comment(lib,"opencv_objdetect243d.lib") #else #pragma comment(lib,"opencv_core243d.lib") #pragma comment(lib,"opencv_highgui243d.lib") #pragma comment(lib,"opencv_objdetect243d.lib") #endif //-------------------------------------------------------- //main int main(int argc,char* argv[]) { const char* szWndName="画像"; if(argc<2) { fprintf(stderr,"入力ファイル名を指定してください。\n"); return -1; } IplImage *img=cvLoadImage(argv[1],CV_LOAD_IMAGE_COLOR); if(img==NULL) return -1; cvNamedWindow(szWndName); cvShowImage(szWndName, img); cvWaitKey(0); cvDestroyAllWindows(); cvReleaseImage(&img); return 0; } 【ビルド後にでるエラーメッセージ】 ------ すべてのリビルド開始: プロジェクト: OpenCV, 構成: Debug Win32 ------ TEST02.c C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2054: 'using' の後に '(' が必要です。 C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2061: 構文エラー : 識別子 'using' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(19): error C2054: 'using' の後に '(' が必要です。 C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'using' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'abs' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2061: 構文エラー : 識別子 'atexit' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(21): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atof' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atoi' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2061: 構文エラー : 識別子 'atol' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(22): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'bsearch' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'calloc' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2061: 構文エラー : 識別子 'div' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(23): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'exit' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'free' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2061: 構文エラー : 識別子 'getenv' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(24): error C2059: 構文エラー : ';' C:\Program Files\Microsoft Visual Studio 10.0\VC\include\cstdlib(25): error C2061: 構文エラー : 識別子 'labs' この後はエラー表記が続きます。

  • c言語を勉強し始めたばかりの専門学校生です。

    c言語を勉強し始めたばかりの専門学校生です。 自宅でも学習しようと思い、 Microsoft Visual C++ 2010 Expressをダウンロードしてインストールし、 Visual Studio コマンド プロンプト (2010)を起動したところ、以下のように表示されました。  Setting environment for using Microsoft Visual Studio 2010 x86 tools.  ERROR: Cannot determine the location of the VS Common Tools folder. clコマンドを実行しようとしたところ、  'cl' は、内部コマンドまたは外部コマンド、  操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と表示されました。 そこでvcvarsall.batを実行したところ、最初と同じく  Setting environment for using Microsoft Visual Studio 2010 x86 tools.  ERROR: Cannot determine the location of the VS Common Tools folder. と表示され、clコマンドが使えません。 試しにvcvars32.batを実行してみても同じでした。 clコマンドが使えるようになる解決法をご存知の方がいらっしゃいましたら、ご教授いただけると助かります。

  • C言語の質問

    Fortran言語にはsign(x,y)の関数があります、つまりxの絶対値をもち、かつyの符号をもつ値を生成する関数です。 C言語にこのような関数をも使いたいのですが、調べてみるとcopysignという関数がありました、関数の機能説明もFortaranのsignと同じとなっています。しかしながら、実際にCのソースファイルにcopysignを使うと、ビルド時に、「error C3861: 'copysign': 識別子が見つかりませんでした」のエラーが出てきました。また宣言時に「#include <math.h>も入れています。  どちら様がご存知ならば教えていただければ幸いなことです。  宜しくお願い致します!<^ ^>!!!

  • C2146を回避するにはどうしたら良いのでしょうか

    いつもここにお世話になってますm(__)m。今回は下記の様なエラーが出てしまい、困っております(--;)。 <エラー内容> 1>C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。 1>C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません エラーが起こっているのはwinnt.h内の「typedef void * POINTER_64 PVOID64;」という部分なのですが(他にもありますが)、winnt.hは弄ってないのです。 ネットで検索したところインクルードファイルディレクトリの指定の順番が怪しそうなので、「ツール」「オプション」でPlatformSDK関連が一番上に来るように変更(実行可能ファイル、インクルードファイル、ライブラリファイル)してリビルドしてみましたが結果は変わりませんでした。 他にチェックすべき点をお教え頂けると助かります。 [環境] ・WindowsXP(SP2) ・Visual Studio 2005 Professional(C++、SPなし)

  • C言語でプログラミングをしており,難しい計算部分だけmathemati

    C言語でプログラミングをしており,難しい計算部分だけmathematicaにやってもらおうと考えています. ネットで調べたところ,mathlink.hというものを使えばできるようなのですが,使い方がよくわかりません.どなたか教えていただけますか? mathlink.hをインクルードする際にエラーが出ているようなのですが,おそらくパスが通っていないのだと思いますので,その通し方も含めて教えていただけると大変助かります. よろしくお願いします. 実行環境は, Windows 7 Mathematica 7.0 Microsoft Visual Studio 2010 Version 10.0.30319.1 です。

  • C++でのエラーメッセージの意味

    C:\Program Files\Microsoft Visual Studio\MyProjects\hello\hello.cpp(73) : error C2562: 'main' : 関数は 'void' 型として宣言されていますが、値を返しました。 C:\Program Files\Microsoft Visual Studio\MyProjects\hello\hello.cpp(6) : 'main' の宣言を確認してください。 cl.exe の実行エラー hello.exe - エラー 1、警告 0 ************************** C++で、コンパイルしたら、上記のエラーメッセージが表示されました。 考えられるエラーは何でしょうか? どのように直したらよいでしょうか? どうかお教えください。

  • 「Microsoft Visual C++」でCやC#できますか?

    プログラミングについて初心者です。 仕事の関係でC#を勉強しないといけなくなりました。 学生時代はMATLABしかやっていないし、独学で勉強しようと思って学生時代にMicrosoft Visual C++を入れたのですが、本を見て例題にそって動かしただけであとはずっと眠っています。。 ここで質問があります。 C#を勉強するのにMicrosoft Visual C++では駄目でしょうか?(とんちんかんな質問してたらすみません。コンパイラがあればCは大丈夫って聞いてたのですが。。) あまりにもおかしい質問ならご教授願います。 C#を勉強するには、Microsoft Visual C++ではなくてVisual Studio 2005 Standard Editionの方がいいのですか?(ネットでいろいろ調べたらこれがでてきました。) もし、Visual Studio 2005 Standard Editionならいま入ってるMicrosoft Visual C++はアンインストールしてから入れたほうがいいですか? よろしくお願いします。

  • (C#、C++) ではC言語は読めないので

    Microsoft Visual Studio(C#、C++) ではC言語は読めないと思います。 MinGwとMSYS今までやっていたのですが、突然作業ができなくなりました。アンインストールして再インストールしてもだめです。 Windows7Ultimate用のC言語のコンパイルソフトとシェルを探しています。  以上宜しくお願いします。    

  • c言語のコンパイラ

    c言語の勉強を始めようと思っています。 Visual Studio.NET 2002を持っているのですが、これでコンパイルできるのでしょうか? やり方がわかりません。 よろしくお願いします。