現在、C言語を勉強しているのですが、ソフトの使い勝手が悪いのです。何かお勧めのC言語勉強用のフリーソフトはないでしょうか? あと、ゲームのプログラマを目差しているのですが、C言語から始めるのはどうでしょうか?回答お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

C言語のフリーソフトはNo2の方と同意見です。



ただ、目的がはっきりしませんが、最初はC言語から入るのは問題無いと思います。
ただ、プログラマになりたいということであればオブジェクト指向の考え方が必須になります。
そのため、C言語の次はJavaかC++を勉強することをお薦めします。どちらかといえばJavaの方が敷居が低いので、Javaを勉強すると良いでしょう。

JavaはJavaの本を買うとJDKがCD-ROMについてくる場合が多いので、とくに問題ないです。
C++を勉強するのであれば、No2の方と同様に、ボーランドC++がフリーとしてあります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。C言語から入るのは問題無いということで少し安心です。JavaかC++ですか・・・なるほど、C++はボーランドのやつを使って勉強しようと思います。先にJavaを勉強してからC++やってみます。ありがとうございました。

お礼日時:2002/02/18 14:30

フリーソフトとして、cygwinはいかがでしょうか?


gccコンパイラがついています。
コンソールなので使いづらいかもしれません。

使いやすいのはMicrosoftVisualC++ですね。
フリーではなくやたら高いのですが。

言語を始めるのであればC++がよいと思います。
C++からC、C++からjavaへ入っていくのは簡単です。

参考URL:http://sources.redhat.com/cygwin/
    • good
    • 0

こんにちは。

itohhといいます。

他の方の「回答に対するお礼」を見ていると、なんとなく誤解されているような気がします。
ボーランドのC++コンパイラはCのコンパイラでもありますから、Cの勉強にも
使えますよ。

「そんなこと判っているよ」と、わたしの勘違いでしたらお許しください。
    • good
    • 1

使用するOSにもよりますがWindowsを使うのであればボーランドC++などいかがでしょう。

下記ページからダウンロードできます。マニュアル等もあるので使い勝手は良いかと

http://www.borland.co.jp/cppbuilder/freecompiler …

で、Linuxの場合ですがこれはgcc,g++,g77等を使ってはいかがでしょうか。
商用パックの製品だとたいていの場合付属で付いていると思うので。
それではがんばって下さい。
    • good
    • 0
この回答へのお礼

回答ありがとうございますっ!質問が半端ですみません。C++、難しそうな感じです・・・。最終的にはC++を予定しているのですが、C言語から始めた方が良いかな、と思い、C言語から勉強を始めております。C++の方はこれで勉強させていただきます。ありがとうございました。

お礼日時:2002/02/18 14:22

とりあえず、何のOS上で何というコンパイラを使っていてどう使いにくいのか補足ください。


ゲームプログラミング事情は疎いのですが、言語を一つ完璧にマスターすれば他の言語でも応用ができますので、まずC言語からでも良いかもしれませんね。
    • good
    • 0
この回答へのお礼

すみませ~ん!ちょっと質問が悪かったです、すみません。言語を一つマスターですか・・・とりあえずC言語からがんばってみます!ありがとうございました。

お礼日時:2002/02/18 14:16

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC言語のソースコードの書き方

C言語のソースコードの書き方に関する質問です。
0を5個と1を4個の、合わせて9個の数字を並べて出来上がる数列のパターン(126通り)を全て羅列させるプログラムを作りたいと考えていますが、そのためにどういった方針を立ててソースコードを書けばよいかが分かりません。
どういった構造かだけでも構いませんので、教えて頂けると幸いです。
よろしくお願いします。

Aベストアンサー

という方針で書くとこんな感じね。
#include <stdio.h>

void
print_pattern(char pattern[], int size)
{
for (int i = 0; i < size; i++) {
printf("%c", pattern[i]);
}
printf("\n");
}

void
iter(char pattern[], int end, int n, int m)
{
if (n == 0 && m == 0) {
print_pattern(pattern, end);
return;
}

if (n == 0) {
pattern[end] = 'b';
iter(pattern, end + 1, n, m - 1);
return;
}
if (m == 0) {
pattern[end] = 'a';
iter(pattern, end + 1, n - 1, m);
return;
}

pattern[end] = 'b';
iter(pattern, end + 1, n, m - 1);
pattern[end] = 'a';
iter(pattern, end + 1, n - 1, m);
}

int
main(void)
{
int m = 5, n = 4;
char pattern[m + n];
iter(pattern, 0, m, n);
return 0;
}

という方針で書くとこんな感じね。
#include <stdio.h>

void
print_pattern(char pattern[], int size)
{
for (int i = 0; i < size; i++) {
printf("%c", pattern[i]);
}
printf("\n");
}

void
iter(char pattern[], int end, int n, int m)
{
if (n == 0 && m == 0) {
print_pattern(pattern, end);
return;
}

if (n == 0) {
pattern[end] = 'b';
iter(pattern, end + 1,...続きを読む

QC言語もしくはC++言語プログラマになれますか?

私は30歳になったばかりです。諸事情によりずっと家にいます(母親の病気などです)。

5年ほど前JavaでWebシステムを作っていましたが、やめました。それ以降もJavaやPHP、VB.NETなどやってはいるんですが、なかなか腰を落ち着けられません。

私は本来の性格として基礎固めが大好きというか基礎がしっかりしていないと意味がないと考えてしまうタイプです。こと、プログラムに関しても、コンピュータの仕組みから理解してアセンブラやらの書物を読み、C言語を勉強したりするとコンピュータを根本から理解できて、やっと自分の役に立つという思考しかできないものです。いきなり高級言語のJavaやらC#やら.NETやらやっても、うわべだけさすってるようで、根本的な理解を得られないので(コンピュータに対する)、無駄だなあとどうしても感じてしまうのです。また、それよりも基礎からしっかり積み重ねた方が後々、新しい言語ができても理解の度合いというかどっしりと理解できるとおもうのです。

しかし、就職のことを考え、PHPやらC#やらJavaやらVB.NETやらを優先してきてどれもどっちつかずになってしまいました。当然Cなども合間をぬってやっていました。

で、私は、そのどっちつかずな状態がいやなので、CとC++に絞って勉強することにしました。で、低級コンパイラの中身やアセンブラも勉強していこうと決心しました。しかし、就職のことを考えると不安です。

あと、1年みっちり勉強するとして、CやC++の就職先はあるのでしょうか?自分としては、働ける限り年齢がいくつになってもがんばりたいとおもうのですが、なにしろ世間的にいうと全く遅い年齢です。もし、励ましになるような事もありましたら、ご回答していただければ、うれしいです。よろしくお願いします。

私は30歳になったばかりです。諸事情によりずっと家にいます(母親の病気などです)。

5年ほど前JavaでWebシステムを作っていましたが、やめました。それ以降もJavaやPHP、VB.NETなどやってはいるんですが、なかなか腰を落ち着けられません。

私は本来の性格として基礎固めが大好きというか基礎がしっかりしていないと意味がないと考えてしまうタイプです。こと、プログラムに関しても、コンピュータの仕組みから理解してアセンブラやらの書物を読み、C言語を勉強したりするとコンピュータを根本から理解で...続きを読む

Aベストアンサー

ゲームメーカーに勤めているものです。
Windowsを含め市販のパッケージゲームはほとんどがC/C++で作られています。
(ゲームがハードよりだとは思いません)
この業界は学歴とかは関係なく実力オンリーの世界です。
MIT卒も専門卒も同じ土俵です。うちは大手ですが中途採用で学歴を見る事はありません。
>私は零細企業くらいにしか入れないとおもっていますので(学歴がないので)、
何かコンプレックスをお持ちのようですが、逆にそういうオーラがでていると
面接で悪い印象を与えてしまうと思います。
>仕事を選らべる年齢とは思っていないので
もう少し欲を持った方が良いと思います。
40歳で新しい業界に転進しようとしている人がいたとしても
努力が伴っていれば、誰もおかしいとは思わないでしょう。

C言語というのはゲームに限らず性質的に下位層のものを作る事が多いです。
既に話が上がっているようにモジュールを作る仕事もあるわけですが
例えば圧縮や暗号化等のモジュールを作ろうとすると数学の知識も必要です。
C/C++の言語仕様に関する知識だけでは、年齢も考えると就職は厳しいかもしれません。
アセンブラは武器になると思います。アセンブラの経験者は減ってきていますが
需要はあります。
特に下位層の部品は実行速度が重要ですのでインラインアセンブラが使われている事は
よくあります。

>1年みっちり勉強するとして、CやC++の就職先はあるのでしょうか?
可能性はあります。
kamkamkam3さんがゲームに興味があるかどうかはわかりませんが、
例えばシェーダーをバリバリ使った誰もがうなる3Dゲームを作って会社に持ち込めば
ひっぱりだこになるでしょう。

ゲームメーカーに勤めているものです。
Windowsを含め市販のパッケージゲームはほとんどがC/C++で作られています。
(ゲームがハードよりだとは思いません)
この業界は学歴とかは関係なく実力オンリーの世界です。
MIT卒も専門卒も同じ土俵です。うちは大手ですが中途採用で学歴を見る事はありません。
>私は零細企業くらいにしか入れないとおもっていますので(学歴がないので)、
何かコンプレックスをお持ちのようですが、逆にそういうオーラがでていると
面接で悪い印象を与えてしまうと思います。
>仕...続きを読む

QC言語のソースコードについて教えてください。

以下のソースコードを学習用C言語開発環境で行ったのですが、
『ファイル「C:/Users/ユーザー名/AppData/Local/EasyIDEC/project/タイトル/main.c」の
「41行目」で記述エラーを発見しました。
「,」を付け忘れています。』

という、コンパイルエラーが表示されました。
何度も見直したのですが、よくわかりません。

#include <stdio.h>

int main(int argc, char *argv[])
{
char answer ;
answer = 'n' ;

while(answer =='n')
{
int input ;
input = 0 ;
int add ;
add = 1 ;
int sum ;
sum = 0 ;

printf("数値を入力して下さい。:") ;
scanf("%d", &input ) ;

int i ;
i = 0 ;

while(i < input)
{
sum =sum + add ;
printf("\n%d",sum) ;
i++ ;
add++ ;
}

printf("\n1から%dまでの総和は、%dです。" , input , sum) ;

while(1)
{

printf("\n終了しますか? y/n:") ;
scanf(" %c , &answer) ;

if( (answer != 'y') && (answer != 'n') )
{
printf( "y or nを入れてください。") ;
}
else
{
break ;
}
}
}
return 0 ;
}

以下のソースコードを学習用C言語開発環境で行ったのですが、
『ファイル「C:/Users/ユーザー名/AppData/Local/EasyIDEC/project/タイトル/main.c」の
「41行目」で記述エラーを発見しました。
「,」を付け忘れています。』

という、コンパイルエラーが表示されました。
何度も見直したのですが、よくわかりません。

#include <stdio.h>

int main(int argc, char *argv[])
{
char answer ;
answer = 'n' ;

while(answer =='n')
{
int input ;
input = 0 ;
int add ;
add = 1 ;
int sum ;
sum = 0 ;

printf("...続きを読む

Aベストアンサー

>>おかげで、エラー表記されずに、プログラムが実行されました。

これはコンパイルがうまく完了したってことでしょうか?できあがったプログラムが実行できたってことではないですよね?そうなら

>>’タイトル’は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」

なんて問題は起きないはすですからね。

できあがったファイルは、XXXX.EXEのように拡張子のEXEがついていますか?もしXXXX.OBJであれば、リンクができていませんから、実行できません。

学習用C言語開発環境の使い方を確認してみてください。

P.S.
昔は、コンパイラを使うのは大変でしたが、今は楽ですね。CではなくPascal系コンパイラーですが、カセットテープに入っていて、コンパイラの読込にテープレコーダで15分かかったりとか、まあ大変だけど面白い時代でした。

Qvisual studioのC言語とフリーソフトのC言語ツールの違い

前にvisual studioでC言語の勉強を行っており、再び始めようかと思っているものです。

少し疑問に思ったのですが、visual studioのC言語とC言語のフリーソフトの違いは何でしょうか?

Aベストアンサー

現実には「フリーソフト」が何かにもよるのでしょうが、
原則としては「C言語」の仕様範囲であるかぎり、
何処の製品/プロダクトだろうが何も変わりません。
(「C言語」は国際標準の規定がありますので、この範囲では大差ない)

後は、すでにあるようなWindowsアプリ(GUI)の作りやすさとか、
IDE(プログラム用の統合ソフト)、その他ツールなどが付いてるだけです。

QC言語ソースコードに関する質問です。

以下の数列について,初項から第15項までを求めるプログラムと実行結果を示せ。
0 1 1 2 3 5 8 13 21(ただし,初項=0,第1項=1とする。)

ソースコードを書くと、エラーがでた。
#include <stdio.h>
int fib(int n)
{
if(n==1 || n==2)
return 1;
else
return fib(n-1)+fib(n-2);
}
int main(void)
{
int n;
for(n=0;n<17;n++)
printf("%d,",fib(n));
}

正しソースコードを教えてください!

よろしくお願いします。

Aベストアンサー

#include <stdio.h>

void fib(int i, int j, int n)
{
if (n == 1)
{
printf("%d\n", i);
}
else
{
printf("%d\n", i);
return fib(j, i + j, n - 1);
}
}

int main(void)
{
fib(0, 1, 15);

return 0;
}

QC言語をフリーソフトで勉強したいのですが

C言語をフリーソフトで勉強したいです。
なので
「窓の社」というサイトで「C言語を始めよう」というソフトをダウンロードしました。
 その次にコンパイラをダウンロードしたいのですがwindows XPに適用したコンパイラが見つかりません。どこでダウンロードできますか?教えてください。あとコンパイラのほかに何か必要なものがあったら教えてくださいm(__)m

Aベストアンサー

以下のサイトはコンパイラ・テキストエディタのダウンロードからインストール使用するまで詳しく載せられているのでお奨めです。
勿論C言語の勉強もできるので是非活用してみて下さい。

「苦しんで覚えるC言語」
http://homepage3.nifty.com/mmgames/c_guide/

Qc言語のソースコードを教えて下さい

キーボードから10個の正整数値を読み込み,合計値を表示するプログラムを作りなさい。
ただし,キーボードから読み込んだ値はint型変数xにしまわれるものとし,変数はこのxと回数を数えるint型変数countと合計値をしまうint型変数sumのみを用いることとする。

このプログラムのソースコードを教えて下さい。
解説もよろしくお願いします。

Aベストアンサー

一例です。
添付のURLを参照して下さい。
因みに、平均値も算出しているが気にせずに、後はご自身で変数、コードを要調整して下さい。

参考URL:http://www.geocities.jp/kenji_y0328/crenshu/renshu/r021.gif

Qc言語はどのくらい出来るようになれば良いのでしょうか? 他の言語を勉強する予定ですけど、まずはc言

c言語はどのくらい出来るようになれば良いのでしょうか?

他の言語を勉強する予定ですけど、まずはc言語を勉強しようと思い勉強してるのですが、どこまで出来るようになれば良いのでしょうか

Aベストアンサー

単にC言語の文法を勉強するだけなら難しい事ではありません。
但し、仕事として活用できるレベル、又は他の言語を理解するのに
役に立つレベルになるには、多くの知識と経験が必要になります。

C言語を使って、そこそこ難しいアルゴリズムでも簡単に作れる程度
(最低限)になれば、他の言語でも習得するのは容易ですが、勉強の
目的が他の言語を学ぶ足がかりにするだけなら、C言語を学ぶ効果は
低い物となります。

陸上競技で記録に関係無く100m・200m走るだけなら、誰でも簡単に
出来るが、競技大会において上位入賞できるレベル、又は短距離走
での能力を生かし、他の競技(例えば走り幅跳び)で好記録を出せる
レベルになる事は難しいのと同じ。

Qソースコードの間違い (C言語)

変数に、文字列を入れた配列の文字列の最後の要素数を入れたいのですが(つまり'\0')、うまくいきません。いつも2個多い値になってしまいます。

#include <stdio.h>

void main() {
char moji[100]={0};
int c=0;

fgets(moji,sizeof moji,stdin);

while( moji[c] != '\0' ) ++c;

printf("\n%d\n",c); //
}

例えば5文字の1ビット文字を入れると、最後の文字はmoji[4]にあるのでprintfで4と表示されるはずじゃないですか。でも6になるんです。いつも+2の値になるんですよ。どうやらfgetsを使っているからそうなるらしく、scanfを使うと結果は1多い値に、普通に配列に直接文字列を代入すると正常な結果になります。別にcに-2してもいいのですが、それはなんだか癪といいますか・・・。なぜこういうことがおきるのでしょうか?回答よろしくお願いします。

Aベストアンサー

>なぜこういうことがおきるのでしょうか
そのmoji[]の余計な部分にはどんなコードが入っているかは確認していますか?
リターンキーも「キー入力」の一つですよ。

QC言語を勉強し始めて2ヵ月の者です。

C言語を勉強し始めて2ヵ月の者です。

今、苗字と年齢、身長、体重の順に10人分のデータを入力し、身長が降べきの順になるように並び替えて出力させるプログラムを、構造体を使って作成する問題を考えています。

ですが、コンパイルはうまくいくのですが、いざ実行するときにうまくいきません。どこがおかしいのでしょうか? 教えてください。



成功したとき、出力は、
伊藤 19歳 190cm 60kg
鈴木 25歳 188cm 72kg
    ・
    ・
    ・
というようになります。

以下が私の作成したソースです。よろしくお願いします。



#include<stdio.h>
#include<string.h>

typedef struct{
char name[7];
int age;
int height;
int weight;
}keisoku;

void swap(keisoku a[10], int i, int j){

keisoku temp;

temp=a[i];
a[i]=a[j];
a[j]=temp;

}



int main(void){

keisoku a[10];
int i, j;


while(scanf("%s %d %d %d",a[i].name,&a[i].age,&a[i].height,&a[i].weight)!=EOF){

for(i=0;i<10;i++){
for(j=0;j<10;j++){

if(a[i].height<a[j].height){

swap(a,i,j);
}
}
}

}
for(i=0;i<10;i++){

printf("%s %d歳 %dcm %dkg",a[i].name,a[i].age,a[i].height,a[i].weight);
printf("\n");
}

return 0;
}

C言語を勉強し始めて2ヵ月の者です。

今、苗字と年齢、身長、体重の順に10人分のデータを入力し、身長が降べきの順になるように並び替えて出力させるプログラムを、構造体を使って作成する問題を考えています。

ですが、コンパイルはうまくいくのですが、いざ実行するときにうまくいきません。どこがおかしいのでしょうか? 教えてください。



成功したとき、出力は、
伊藤 19歳 190cm 60kg
鈴木 25歳 188cm 72kg
    ・
    ・
    ・
というようになります。

以下が私...続きを読む

Aベストアンサー

 Linux または Mac OSXなどの UNIX系OSを使っている場合の回答です。
 struct構造体はなるべく main()関数の前に置くと広域変数として引数を意識することなくプログラミングできます。また、main()関数を最後に配置してCコンパイラーが関数を main()関数からジャンプできるようにしているのを良く見かけますが、プログラムの流れは上から下へ流れるようにしたほうが見易く、わかり易いですよ。なるべくなら面倒でもプロトタイプ宣言をして top-downプログラミングされることを勧めます(好みの問題もありますが...)。
 ファイルの読み込みのは、while(!feof(stdin)) が定番です。そのうち知らず知らずのうちに覚えてしまうでしょう。バブルソートの for()はうっかりミスのようですね。まあ、先は長いので、取り合えずは動くプログラムの内容を確認していただければ良いんじゃないでしょうか。
 実際の起動に際しては次の

3
伊藤 19 190 60
鈴木 25 188 72
和田 22 173 66

ようなデータファイル(例えば Data_file)をエディタで作成しておき、ターミナルのシェルプロンプトから
  ./a.out<data_file
と打ち込めば動きます。なお、データファイルの文字間は半角スペースを厳守してください。
 では、焦らない程度に頑張ってください。



/* One sample program by Mac OSX
* file name: tyran.c
* compile: gcc tyran.c
*/

#include<stdio.h>
#define SIZE 24/* 漢字が12字分 */
#define NUMBER 15/* データ数+α */

struct set1 {
char name[24];
int age;
int height;
int weight;
} keisoku[NUMBER];// データは広域設定の方が楽ですよ

/* プロトタイプ宣言(top-down記述ができ、見易い)*/
void print_out(char *, int);
void swap(struct set1 *, struct set1 *);

int main(void) {
int n, i, j;

/* データの読み込み */
i = 0;
scanf("%d", &n);
scanf("%s %d %d %d", keisoku[i].name, &keisoku[i].age, &keisoku[i].height, &keisoku[i].weight);
while (!feof(stdin)) {
i += 1;
scanf("%s %d %d %d", keisoku[i].name, &keisoku[i].age, &keisoku[i].height, &keisoku[i].weight);
}

/* 読み込みデータの内容 */
print_out("入力データ", n);

/* バブルソート */
for (i = 0; i < 10; i++) {
for (j = n - 1; j > i; j--) {
if(keisoku[j - 1].height < keisoku[j].height) {
swap(&keisoku[j -1], &keisoku[j]);
}
}
}

/* 結果の出力 */
print_out("整列結果", n);

return 0;
}


void print_out(char *comment, int n) {
int i;

printf("%s\n", comment);// 見易く改行
for(i = 0; i < n; i++) {
printf("\t%-10s %d歳 %dcm %dkg", keisoku[i].name, keisoku[i].age, keisoku[i].height, keisoku[i].weight);
printf("\n");
}
}


void swap(struct set1 *a, struct set1 *b) {
struct set1 temp;

temp = *a;
*a = *b;
*b = temp;
}

 Linux または Mac OSXなどの UNIX系OSを使っている場合の回答です。
 struct構造体はなるべく main()関数の前に置くと広域変数として引数を意識することなくプログラミングできます。また、main()関数を最後に配置してCコンパイラーが関数を main()関数からジャンプできるようにしているのを良く見かけますが、プログラムの流れは上から下へ流れるようにしたほうが見易く、わかり易いですよ。なるべくなら面倒でもプロトタイプ宣言をして top-downプログラミングされることを勧めます(好みの問題もありますが...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング