おまいら!今日からC言語を学んでいくぞー!パート3

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
1 名前:ポポ巣 ◆Qgm8RFT0/. [] 投稿日:2005/10/07(金) 07:23:58
おはようー!
あたいのスペックは
26歳フリーター、パソコン歴インターネット歴は6年
しかしそれ以外の事は何もできにゃーい…
というわけで今日から参考書を買ってがんばります!
今まさに私みたいに、これからCを勉強するぞって人いたら
よろしくね!!!
前スレが一杯になりそうなので新しく作りました☆
今日でC言語歴約2週間です^^;
簡単な文字の表示はできるようになったんですが
進むペースは亀さん並に遅いので、ゆっくり見守ってね(><。)
もっと容量のいい頭がほしいー(><。)

まとめwiki (誰でも編集OK)
http://gamdev.org/w/?%5B%5B%A4%AA%A4%DE%A4%A4%A4%E9%A1%AA%BA%A3%C6%FC%A4%AB%A4%E9C%B8%C0%B8%EC%A4%F2%B3%D8%A4%F3%A4%C7%A4%A4%A4%AF%A4%BE%A1%BC%A1%AA%5D%5D

■類似スレ(Java)
□■JAVAプログラマーを育てるスレ■□
http://pc8.2ch.net/test/read.cgi/tech/1081149073/

■類似スレ(何でもあり)
【初心者】課題をクリアしていくスレ【講習会】
http://pc8.2ch.net/test/read.cgi/gamedev/1086858349/
【目標ない奴】おまいらに課題を与える。【集まれ】
http://pc8.2ch.net/test/read.cgi/gamedev/1026148930/
2デフォルトの名無しさん:2005/12/15(木) 20:28:18
■過去スレ
おまいら!今日からC言語を学んでいくぞー!パート2
http://pc8.2ch.net/test/read.cgi/tech/1128637438/
3デフォルトの名無しさん:2005/12/15(木) 21:30:19
またこの手のスレかよ。
一体何を意図してこんなすれをたてるのか?

4デフォルトの名無しさん:2005/12/15(木) 21:34:48
Cでそんなに苦戦するならやめればいいのに。
5デフォルトの名無しさん:2005/12/15(木) 23:36:03
>>3
テンプレサイトまであるからな。
6デフォルトの名無しさん:2005/12/16(金) 02:48:21
話題も無いのにスレ立てるな
7デフォルトの名無しさん:2005/12/16(金) 17:02:07
まあ立てないと話題は発生しないけどな。
8デフォルトの名無しさん:2005/12/17(土) 23:37:00
txtをhtmlに変換するプログラム作ったのですが、最後の位置文字が処理されません。助言願います。
#include<stdio.h>
#include<stdlib.h>
void page(char *tg){  //タグ用書込関数
  FILE *fp;
  fp = fopen("output.html","a");
  fprintf(fp,"%s",tg);
  fclose(fp);
}
void kakiko(char *kk){  //書込関数
  FILE *fp;
  fp = fopen("output.html","a");
  fprintf(fp,"%s\n",kk);  //一行書き込んで改行
  fclose(fp);
}
int main(void)
{
  char *tag;  //html,body,/body,/html
  char col[2][20];
  char fn[30],buf[1024];  //ファイル名,置換前バッファ
  char buf2[1024];  //置換後バッファ
  char br[]="<br>";
  char lt[]="<";  //'<'
  char gt[]=">";  //'>'
  char ap[]="&";  //'&'
  FILE *fp;
  int i,t,A=0,B=0,con=0,sum=0;
  printf("\t\t************************\n");
  printf("\t\t* convert Text To HTML *\n");
  printf("\t\t************************\n");
  printf("textファイル名?:");
  scanf("%s",fn);
9デフォルトの名無しさん:2005/12/17(土) 23:37:41
  fp = fopen("output.html","w");
  fclose(fp);
  fp = fopen(fn,"r");
  if(fp==NULL){
    printf("File Open Error\n");
    exit(1);
  }
  tag="<html>\n";
  page(tag);
  printf("色を指定しますか?(する:1,しない:0)>>");
  scanf("%d",&i);
  if(i==1){  //「する」なら背景色と文字色指定
    printf("背景色?:");
    tag = "<body bgcolor=\"";
    page(tag);
    scanf("%s",col[0]);
    page(col[0]);
    printf("文字色?:");
    tag = "\" text=\"";
    page(tag);
    scanf("%s",col[1]);
    page(col[1]);
    tag="\">\n";
    page(tag);
  }else{  //1以外なら<body>
    tag="<body>\n";
    page(tag);
  }//1以外なら白地に黒
  while(1){  //EOFまで反復処理
    for(i=0;i<1024;i++){  //buf(2)の初期化
      buf[i]='\0';
      buf2[i]='\0';
10デフォルトの名無しさん:2005/12/17(土) 23:39:31
    }
    fgets(buf,1024,fp);  //1行読み込み
    i=0;
    while(buf[i]!='\0')  //文字数取得
      i++;
    buf[i]=' ';
    buf[i+1]='\0';
    if(buf[1]=='\0')break;  //EOF判定
    A=0;
    B=0;
    while(buf[A]!='\0'){  //文字列の最後まで
      if(buf[A]=='<'){  //'<'があれば
        for(i=0;i<4;i++){
          buf2[B]=lt[i];  //"<"に置換
          B++;  //置換後ポインタ++
        }
        B--;
      }else if(buf[A]=='>'){  //'>'があれば
        for(i=0;i<4;i++){
          buf2[B]=gt[i];  //">"に置換
          B++;  //置換後ポインタ++
        }
11デフォルトの名無しさん:2005/12/17(土) 23:40:10
        B--;
      }else if(buf[A]=='&' && buf[A+2]=='t'){  //"&?t"があれば
        for(i=0;i<5;i++){
          buf2[B]=ap[i];  //"&"に置換
          B++;  //置換後ポインタ++
        }
        B--;
      }else  //それ以外なら
        buf2[B]=buf[A];  //そのまま代入
        A++;  //次の文字へ
        B++;  //置換後ポインタ++
    }
    i=0;
    while(buf2[i]!='\0')
      i++;  //出力字数を取得
    i-=2;
    if(i==0)
      i++;
    for(t=0;t<4;t++){
      buf2[i]=br[t];  //文末に<br>を挿入
      i++;  //文末++
    }
    buf2[i]='\0';
    sum+=i;
    kakiko(buf2);  //書出し関数へ
12デフォルトの名無しさん:2005/12/17(土) 23:41:49
    con++;
    printf("・");
    if(con%10==0)
      printf(" %d\n",con);  //行数出力
  }
  tag = "</body>\n";
  page(tag);
  tag = "</html>\n";
  page(tag);
  printf("\n\n%d行、%d文字くらい\n",con,sum/2);
  printf("output.htmlに出力しました\n");
  return 0;
}

//以上です。実行環境はgcc2.95.1です。
13デフォルトの名無しさん:2005/12/17(土) 23:50:41
ここまでできてんだったらご自分で解決できそうなもんじゃねえかと。
最後にスペースとか無駄に入れるとできるもんです?
14デフォルトの名無しさん:2005/12/18(日) 00:06:15
>>13
ええ、実行時にムダスペース入れる処理とか考えたのですが、
元ファイルを弄るのもどうかなと思いまして。
それに実行するたびにどんどんスペースが増えていくし。。
15デフォルトの名無しさん:2005/12/18(日) 00:38:03
>>12
コードに無駄が多すぎて全部をきちんと読んだわけではないが、
取り敢えずstring.h内の標準関数くらい使い方覚えたら?

以下問題点列挙。
・文字数取得:strlen()を使え。
・EOF判定:意味不明。
・1行1024バイト以上のファイルを食わせたらどうなる?
・変数名を大文字はセンスが凄すぎ。
・buf2は最悪bufの4倍の長さが必要だと思うが。
・"<"に置換:自分で「4」を数えるな。コンパイラは既に知っている。
#つーかそもそもsprintf()かstrcat()でも使え。
・"&?t"があれば:意味不明。なんで&だけの場合は置換しないんだ?
・htmlの規格を満たすためには要素が足りなすぎる。
・colを配列の配列にする必然性がない。そう言えばtag変数も要らない。
・1以外なら白地に黒:とは限らない。単に、無指定なだけ。
・buf(2)の初期化:要らない。
何故なら、それぞれ上書きされるだけだし、初期化に頼って安直なコードを書く癖がつく。

恐らく空白を追加したりカウンタを微調整したりと言う小細工の所為で文字が消えているのだろう。
基本を抑えつつ、書き直した方が早いかも知らん。
#例えば、fgets()で取り込んだ行には大抵改行文字が最後に一つある。それの処理が明記されていない。
#但し、改行文字がない場合が二つある。一つはバッファが一杯のとき、もう一つはファイル末尾。
#もしかしたら、当てずっぽうで調整していないか?
16デフォルトの名無しさん:2005/12/18(日) 00:38:37
ファイルポインタって使い回しできるのね?
文字数取得はstrlen
配列とポインタは別物
17デフォルトの名無しさん:2005/12/18(日) 00:45:30
>>15
了解です。一度見直してみます。

>・EOF判定:意味不明。
buf[1]が\0なら末尾扱いするようにしました。
"EOF"という言葉が適切ではないかもしれませんが。。
>・"&?t"があれば:意味不明。なんで&だけの場合は置換しないんだ?
'>'、'<'の特殊文字を見つけるためにそのようにしました。
>#但し、改行文字がない場合が二つある。一つはバッファが一杯のとき、もう一つはファイル末尾。
このあたりが怪しい気がします。
>#もしかしたら、当てずっぽうで調整していないか?
ごめんなさい。
18デフォルトの名無しさん:2005/12/18(日) 01:25:10
ここは学びたい人間が使うスレだ
校正なら宿題スレにでも行け
19デフォルトの名無しさん:2005/12/18(日) 07:48:17
まとめwiki見たけど
これ何の価値もないなw
20デフォルトの名無しさん:2005/12/18(日) 08:05:31
まず本読め
おまいは未だポインタの意味が分ってない
*tagにアドレス入ってないぞ
21デフォルトの名無しさん:2005/12/18(日) 10:04:17
>>20
>*tagにアドレス入ってないぞ
???
22デフォルトの名無しさん:2005/12/18(日) 12:31:04
>>20
文字列ポインタとして使ってるです。
"<html>"とかをメモリ上に確保してそこのアドレスが入るはず。
23デフォルトの名無しさん:2005/12/18(日) 21:54:12
*tagはどこをさしてるか分らんポインタ
そこに""でくくったサイズ不定の文字列ブッコン伝だぞ
恐ろしい奴だな
それでエラーでないの?
tag[256]にしてstrcpyで文字列変更が普通
本読んで出直して来い
24デフォルトの名無しさん:2005/12/18(日) 22:07:05
>>23
本読んで出直すのはお前だ
25デフォルトの名無しさん:2005/12/18(日) 22:11:59
>>23は恐ろしい奴だな。
26デフォルトの名無しさん:2005/12/18(日) 22:44:38
>>20==>>23か?
char * tag; tag = "foo";
と書いた場合、tagには単純に文字列リテラル("foo")へのポインタが代入されるだけだぞ。
もしかして、
char foo[] = "foo";

char * bar = "foo";
では振る舞いが全く違うことを理解していないのではないか?
27デフォルトの名無しさん:2005/12/19(月) 20:32:42
すいません、間違っていたようで…
char *tag;
tag="abc";
とできるのは知ってたが、さらに
tag="def";
とできるのは知らんかった
文字列はいじれないという事と勘違いしてたみたいだorz
28デフォルトの名無しさん:2005/12/19(月) 21:00:54
でも普通こんな使い方しないだろ
*tag使わず直でpage("abc");でいいし
それかchar配列に前もって容れとくだろ
まあ間違ってたのは俺で一通りKR読んだんだが…出直してきまつ
29デフォルトの名無しさん:2005/12/19(月) 23:36:31
>>15
ファイル末尾の改行文字無しが文字欠けの原因だったようです。
これから無駄を削っていくことにします。
ありがとうございました。
>>28
page("abc");が出来るのを忘れてました。
仰る通りです。。
30デフォルトの名無しさん:2005/12/20(火) 11:31:39
>>29
両方とも>15が指摘済みだな。
31デフォルトの名無しさん:2005/12/20(火) 12:45:08
標準入力から入力した文字列の順序を逆さまにして、標準出力へ表示するCプログラムを作成せよ。例えば、"abc"と入力すると"cba"と出力する。
32デフォルトの名無しさん:2005/12/20(火) 13:46:06
みんな何言ってるかわかんね。
俺は超初心者だからな。
33デフォルトの名無しさん:2005/12/20(火) 17:01:29
>>32
初心者の学びスレなので分からないことあれば誰か教えてくれるかも。
34デフォルトの名無しさん:2005/12/20(火) 17:01:35
#define LSIZ5000
int main(void)
{
short *a,*pa;
a=(short *)calloc(LSIZ,sizeof(short));
pa = a;
l_seti(a,19999,pa);
return 0;
}
void l_seti(short a[],int n,short *pa)
{
pa+=2;
if(n>100000000)
{ a=pa;
*a = n/100000000; n = n%100000000;
a--; *a = n/10000; n = n%10000;
a--; *a = n;
}
else if(n>10000)
{ pa -=1;
a=pa; *a = n/10000; n = n%10000;
a--; *a = n;
}
else
{ pa-=2; *a = n; }
}
3534:2005/12/20(火) 17:04:43
上のプログラムですが、
callocで確保したaの配列の各要素に4桁の整数を入力していくプログラムです。
paはaの値の入っている部分の末尾をさすポインタです。
l_setiではpaは上手くaの末尾をさしていたのですが
mainに戻ると、paはaの先頭を指してます。
paをそのまま維持してmainに戻るにはどうすればよいでしょうか?
36デフォルトの名無しさん:2005/12/20(火) 17:11:56
宿題は宿題スレへ
3734:2005/12/20(火) 17:20:47
>>36
移しました
38デフォルトの名無しさん:2005/12/20(火) 20:48:00
関数をshort *l_seti(〜)にして
関数の最後にreturn pa;を入れて
mainに戻って
pa=l_seti(〜);
にすればいいのかな?
要するに関数にはpaのアドレス値を渡してるだけで
mainのpaと関数のpaは別者だから最後にpaのアドレスを返さんといかんのでは?
出直して来た28が言う事だからスルーしてくれ
39デフォルトの名無しさん:2005/12/21(水) 03:16:22
>>38
悪いな、宿題スレで回答済みだ。
40デフォルトの名無しさん:2005/12/27(火) 23:25:00
 
41デフォルトの名無しさん:2006/01/12(木) 23:34:46
人いNEEEE
42デフォルトの名無しさん:2006/01/14(土) 17:32:09
しぃ言語とC言語。その違いは?
43デフォルトの名無しさん:2006/01/14(土) 18:11:02
C#の宿題のアドバイスも可能ですか?
期限まであと2日、困ってます。
44デフォルトの名無しさん:2006/01/14(土) 18:24:29
可能
45デフォルトの名無しさん:2006/01/14(土) 21:37:16
>>43
お前がアドバイスをしたいのか?
46デフォルトの名無しさん:2006/01/25(水) 11:13:10
最初にやるべきことは?
47デフォルトの名無しさん:2006/01/25(水) 11:30:27
開発環境の導入。
48デフォルトの名無しさん:2006/01/27(金) 16:21:49
だれか救いの手を。
 学生の名前と、一教科試験の成績をメンバとする構造体をつくり、それ
らを20個(学生20人分)集めた配列をつくる。ライブラリ関数rand
を用いて、各学生の名前(英小文字5文字)と成績(0〜100)を初期化した
あと、試験の成績の降順に整列して出力するプログラム

構造体の宣言は
    struct student{
       char name[6];
       int point;
    };
難しすぎて解けません
49デフォルトの名無しさん:2006/01/27(金) 16:24:20
>>48
ここは解いてもらうためのスレでは無い
自力で解く人のためのスレだ
50デフォルトの名無しさん:2006/01/27(金) 16:47:40
>>49 うっせはげwwwwwwっうぇwっうぇ
51デフォルトの名無しさん:2006/01/27(金) 17:19:57
>>48
C/C++の宿題を片付けます 59代目
http://pc8.2ch.net/test/read.cgi/tech/1138320520/l50
52デフォルトの名無しさん:2006/03/13(月) 00:21:59
課題のコードブレイカー出来た。。
ソフ開の過去問見たので全く自力ではないが。
53デフォルトの名無しさん :2006/03/13(月) 04:53:29
#include <stdio.h>
#include <stdlib.h>
struct student{
char name[6];
int point;
}a[20];

int main(void)
{
int n,i = 0;

for{;;} //でぐるぐる回す
   n = rand()
   n > 0x61 && n < 0x7a
   a[i].name = n
   a[i].name[5] = '\0'

   a[i].point = n%101

   for //文終わり

あとは、pointでソート

ま、こんな感じになるだろうね。
別にどうでも良いけど
54デフォルトの名無しさん:2006/03/13(月) 05:54:57
さっそくやってみた
さすがにまだまだ余裕

#include <stdio.h>

int main()
{
    printf("Hello, world\n");
    return 0;
}

ところでreturnで返す値ってEXIT_SUCCESSのほうがいいの?
55デフォルトの名無しさん:2006/03/13(月) 05:57:26
#include <stdio.h>

int main()
{
    int i, sum=0;
    for (i=1 ; i<=50 ; i++)
        sum+=i;
    printf("%d", sum);
    return 0;
}
56デフォルトの名無しさん:2006/03/13(月) 06:25:43
#define _CRT_SECURE_NO_DEPRECATE //VS2005のセキュアな関数を使わない
#define FILENAME "data.txt"
#include <stdio.h>

void swap(int *l, int *r)
{
    int tmp;
    tmp=*l;
    *l=*r;
    *r=tmp;
}


int main()
{
    FILE *fp;
    char buf[6];
    int nums[100], int_num=0, i, j, count=0;

    //ファイル読み込み
    fp=fopen(FILENAME, "r");
    while (fgets(buf, sizeof(buf), fp) != NULL)
    {
        sscanf(buf, "%d", &int_num);
        nums[count]=int_num;
        printf("%d\n", nums[count]);
        count++;
    }
    fclose(fp);

57デフォルトの名無しさん:2006/03/13(月) 06:27:17
    //ソート
    puts("");
    for (i=0 ; i<count ; i++)
    {
        for (j=i+1 ; j<count ; j++)
        {
            if (nums[i]>nums[j])
            {
                swap(&nums[i], &nums[j]);
            }
        }
    }

    //表示
    for (i=0 ; i<count ; i++)
    {
        printf("%d\n", nums[i]);
    }
}
ちょっとむずかった
swap関数で値じゃなくてアドレスを入れ替えて失敗したりorz
58デフォルトの名無しさん:2006/03/13(月) 13:57:43
改行だけのためにputs("")を使うのは割とナンセンス。
59デフォルトの名無しさん:2006/03/13(月) 15:19:14
>>58
了解した
どうしたらいいんだ?
60デフォルトの名無しさん:2006/03/13(月) 15:35:23
putchar('\n');かな。
61デフォルトの名無しさん:2006/03/14(火) 04:27:51
今日、初めてswitch文って物を知って感動したよ。素敵。

ところで俺が今勉強しているような超超基本的な関数って、
ゲーム作る段階に至っても使うんだよね??
62デフォルトの名無しさん :2006/03/15(水) 03:57:42
それは、君のアルゴリズムによるさ
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
64デフォルトの名無しさん:2006/04/04(火) 09:39:08
どなたかお暇なら僕を育成して下さい。wiki問題ならたぶん全部出来ます。暇な方問題出しておいて下さると助かります。
65デフォルトの名無しさん:2006/04/04(火) 10:02:49
早く汁。
66デフォルトの名無しさん:2006/04/04(火) 10:41:30
マジ早く汁!
67デフォルトの名無しさん:2006/04/04(火) 11:17:07
我慢汁
68デフォルトの名無しさん:2006/04/04(火) 11:22:52
メッサ早く汁
69デフォルトの名無しさん:2006/04/07(金) 01:27:36
func.hがあって、次のような定義があるとする。
extern void func(void);
この関数はあちこちのソースから呼ばれているものとする。
プログラムを実行した結果、どのソースの何行目からfunc()が呼ばれたか知りたい。
どうすれば良いだろうか。

ただし、func()を呼んでいる.cは正しくfunc.hをincludeしているものとする。
(つまり勝手に内部でextern void func(void);とか宣言して使っていたりはしない)

また.cファイルに手をくわえることを禁止する。.cファイルの中身を見ることも
禁止する。
func.hはいじっても良い。

デバッグ技術クイズってとこかな。
70デフォルトの名無しさん:2006/04/07(金) 04:43:33
やっとキターーーーーーーーァァァァァ!!!!!!!!!ず〜〜〜〜〜と待ってますた。
>>69
と言いますか難しいですよ・・・。デバッグをした事が無いから答えが出せないorz
勘で当ててやるぜ!!!デバッグで関数呼び出し回数だから#ifdefとかを使って
関数の呼び出し回数をカウントする!かもしれない、という憶測しか立てられない。
難す過ぎるからデバッグの勉強のし直しをしますか・・・。
71デフォルトの名無しさん:2006/04/07(金) 06:27:14
>>70
日本語の勉強からし直した方が医院で内科医。
72デフォルトの名無しさん:2006/04/07(金) 07:53:54
答え書くから、あきらめたら言ってくれ。

ヒント func.hに1行加えてコンパイル&実行するだけ。その1行とは?
73デフォルトの名無しさん:2006/04/07(金) 08:20:10
>>71
見放さないで下さい。
>>72
誰かが答えるまで少しヘッダについてググッてきます・・・('A`)
74デフォルトの名無しさん:2006/04/07(金) 08:46:03
分かりましたこうだ!#define func() printf("FileName=%d Line=%d",__FILE__,__LINE__)
やった、これなら合ってる気がします。
75デフォルトの名無しさん:2006/04/07(金) 13:32:55
そして解答が来ない・・・。
76デフォルトの名無しさん:2006/04/07(金) 18:55:39
>>74
方向性はいいけど、それでは func() を呼び出せないんジャマイカ。と通りすがりの突っ込み。
77デフォルトの名無しさん:2006/04/07(金) 19:32:39
課題をお借りしてpythonで書きます。
Cも同時並行で書いてみます。
78デフォルトの名無しさん:2006/04/07(金) 19:33:18
お断りします。
79デフォルトの名無しさん:2006/04/07(金) 19:37:19
何も頼んでないと思われますが
80デフォルトの名無しさん:2006/04/07(金) 19:40:51
お引取り下さい。
81デフォルトの名無しさん:2006/04/07(金) 19:41:52
>>78,80
ワロス
82デフォルトの名無しさん:2006/04/07(金) 20:48:45
>>76
ぐぁ・・・。そうですよねマクロで定義されてしまいますから、そうなりますねorz
では、#define func() printf("FileName=%d Line=%d",__FILE__,__LINE__),func()

というようにprintfの後にfunc()を呼び出せばいいと考えましたが、これはどうでしょうか?
無駄なプログラムっぽいですが・・・。
83デフォルトの名無しさん:2006/04/07(金) 20:53:12
せめて括弧でくくれ。
(printf(...),func())
84デフォルトの名無しさん:2006/04/07(金) 21:38:50
>>83
括弧でくくるんですか。勉強になります!では今回の問題はクリアですね(´∀`)
8569:2006/04/08(土) 09:42:22
出題者です。
82で正解。
86デフォルトの名無しさん:2006/04/08(土) 11:29:39
>>83
なんで?
8769:2006/04/08(土) 13:05:48
よくみたら、82違う。

__FILE__は%sな。
88デフォルトの名無しさん:2006/04/08(土) 13:11:13
>>86
演算子の優先度の違いで予期せぬ結合をする可能性があるから。
int x;
x = func();

上みたいなコードを誰かが書いてもコンパイルエラーで叩き落せるしね。
89デフォルトの名無しさん:2006/04/08(土) 14:22:36
>>88
なるほど
90デフォルトの名無しさん:2006/04/22(土) 08:00:36
初学者です。今日からプログラミング言語Cを教科書にしてちょっとずつ
プログラミングをやっていきたいと思ってますので、よろしくお願いします。
91デフォルトの名無しさん:2006/04/22(土) 08:25:34
過疎スレにいらっさいまし
92デフォルトの名無しさん:2006/04/22(土) 08:27:24
ぅし、 俺も観察しといてやる
93デフォルトの名無しさん:2006/04/22(土) 16:50:06
誰も居ないと思ってたが何人か居たのね。
94デフォルトの名無しさん:2006/05/07(日) 20:43:12
言語の文法 と そもそもプログラムをどのように考えて作るか といった事は
どんな感じで習得すれば良い?

普通一般的に外国語の習得とかっていきなり書くことから始めないよね?
95デフォルトの名無しさん:2006/05/07(日) 23:54:46
>>94
言語の文法:あらかじめ規定してある。
どのように作るか:分かりやすく、読みやすく、移植性に優れ、バグがなく
要求を満たす、だが要求以上なものを作り無駄なコストを作らない事。
俺超かっこいい(´∀`)
96デフォルトの名無しさん:2006/05/23(火) 23:19:07
>>95
>要求を満たす、だが要求以上なものを作り無駄なコストを作らない事。
それってエラー処理も含まれるの?
97初心者0000:2006/05/24(水) 00:45:06
今日から参加したいのですが、よろしいですか?
98デフォルトの名無しさん:2006/05/24(水) 00:50:02
空気の読めない人ですね。
99初心者0000:2006/05/24(水) 01:21:41
皆さん申し訳ない(-_-;)暖かく見守って欲しいです
嫌な別の道を探します
100デフォルトの名無しさん:2006/05/24(水) 11:50:08
初心者は参考書のサンプルプログラムを全部打ち込んで動かして見ろ
言語の文法も意味も分からなくていい
ただそのプログラムを動かすと何が起こるかが判ればいい
次に自分でプログラムを組む時『○○は××ページの例を変えたらできそう』となればその参考書が宝物になる
101デフォルトの名無しさん:2006/05/24(水) 11:53:40
読むだけや付属CDのサンプルプログラムを動かすだけではダメ
自分で打ち込んで初めて身につく
102デフォルトの名無しさん:2006/05/24(水) 19:42:35
>>82 は再起にはならんの?
103デフォルトの名無しさん:2006/05/24(水) 20:07:44
>>102
再起不能だって?

冗談兎も角、マクロの展開は際限なく行なわれることはない。
104デフォルトの名無しさん:2006/05/24(水) 20:27:47
^~
知らんかった。どうも
105ディフォルトの名無しさん:2006/06/10(土) 05:05:14
>100-101
その辺の理由をもう少し深く説明してくれると
より理解できると思うんですが
106デフォルトの名無しさん:2006/06/10(土) 08:46:58
そんなことを説明されないと理解できないんだったら、
深く説明したところでどうせ理解できないから安心しろ。
107デフォルトの名無しさん:2006/06/12(月) 18:19:47
>>105
それはなんでまむこにtぃんぽをつっこむと気持ちがいいんですか?と聞いているのと同義
108デフォルトの名無しさん:2006/07/21(金) 15:58:03
cin
cout
const
↑なんて読むんですか?
109デフォルトの名無しさん:2006/07/21(金) 16:05:04
しまった。過疎スレに書き込んでしまった。あげないと駄目だ。
110デフォルトの名無しさん:2006/07/21(金) 16:11:27
俺はシーイン、シーアウト、コンストと読んでいる。
111デフォルトの名無しさん:2006/07/21(金) 16:17:28
過疎じゃないスレ使えばいいのに
112デフォルトの名無しさん:2006/07/21(金) 16:25:03
ありがとうございます。
113デフォルトの名無しさん:2006/07/21(金) 16:41:18
誰がいいかな?と悩んだ結果・・
18歳○校生 158,45.82C/59/85 30K
18歳○校生 160,47,84C/59/86 25K
1○歳○校生 151,?,85D/58/87 30K
1○歳○校生 157,51,84/62/85 20K
19歳○学生 158,?,85F/64/86 20K

結局悩んだ挙句、ちっちゃい子ロリフェチな俺は三番目に突撃した。
これ全部、ワクワクで本当にアポ取れた子。ホントの話。
他の子断るの申し訳なかったが結果的によかった。
まじで夏川純似の人形みたいな女の子が!?
しかも制ふ○で来ちゃったもんだから自分でも騙されてるとか、もしかして美人局か!?と思ったくらい。
生まれてこんなタイプな子とエチーできたなんて偶然だろうけど本当によかった。
一度でもこんな体験してしまうとマジではまる。というか、もう完全にはまってしまった。馬鹿な俺w
http://550909.com/?f4720435
114デフォルトの名無しさん:2006/07/21(金) 23:36:30
シーアウトって読むの?カウントの略でコウトって読んでた・・・
115デフォルトの名無しさん:2006/07/21(金) 23:58:53
うぜえよ黙れ
116デフォルトの名無しさん:2006/07/22(土) 00:48:47
居やhhッ頬頬オほほほほっふううううううううううううううううううううう
117デフォルトの名無しさん:2006/07/22(土) 01:29:19
>>114
cout/cinのcはconsoleのcだろ。
118デフォルトの名無しさん:2006/07/22(土) 01:31:05
>>1
もうチョット分割してくれないか・・・orz
119デフォルトの名無しさん:2006/07/22(土) 01:40:54
文字列が完全に同じかどうか判断すんのって
strcmpで0が帰ってくるかどうか判定すればおk?
120デフォルトの名無しさん:2006/07/22(土) 01:54:40
>>1に触発されてCUIのhtmlエディタ作ってみたんだが
配列でstr[1023];って指定してるから
1023文字以上入力できねえwwwwwwwwwwwwwwww
だれかボスケテ
121デフォルトの名無しさん:2006/07/22(土) 02:02:12
>完全に同じかどうか
strcmp(s1,s2) は、ゼロよりも、1)小さい、2)等しい、3)大きいのいずれかを返す。
それぞれは、s1 が s2 よりも、1)小さい、2)等しい、3)大きいに対応している。
122デフォルトの名無しさん:2006/07/22(土) 02:03:35
>>120
str[2047];で解決。
123デフォルトの名無しさん:2006/07/22(土) 02:08:39
>>122
そしたら2047以上入力できなくね?
124デフォルトの名無しさん:2006/07/22(土) 02:59:32
じゃ、str[2054];で
125デフォルトの名無しさん:2006/07/22(土) 03:15:45
>>122

メモリ確保。
malloc(),free()使えばいいよ。

例>
char* str = NULL;
char


126125:2006/07/22(土) 03:16:56
すまん、途中までうって転送してしまった。あとは補完しといて。
127デフォルトの名無しさん:2006/07/22(土) 08:13:45
ぷっって吹いた
128デフォルトの名無しさん:2006/07/22(土) 11:40:32
こんなんになった
#include <stdio.h>
#include <stdlib.h>


/*htmlを書き始める*/

FILE* starthtml() {
char str[1023];
FILE *fp;

printf("htmlファイル名を入力してください\n");
scanf("%s",&str);

if((fp=fopen(str,"w"))==NULL) {
printf("ファイル作成時にエラーが発生しました\n");
exit(1);
}

printf("htmlのタイトルを入力してください\n");
scanf("%s",&str);
fprintf(fp,"<html>\n<head><title>%s</title></head>\n<body>",str);

return (fp);
}
129デフォルトの名無しさん:2006/07/22(土) 11:41:02
/*htmlの終了処理*/
int endhtml(FILE *fp){
fprintf(fp,"\n</body>\n</html>");
fclose(fp);
return 0;
}
130デフォルトの名無しさん:2006/07/22(土) 11:41:33
/*htmlに書き込むメイン処理*/

int writehtml(FILE *fp){
char str[1023];

while(1){
scanf("%s",&str);
if(strcmp(str,":q")==0) break;
fprintf(fp,"%s<Br>\n",str);
}

return 0;
}
131デフォルトの名無しさん:2006/07/22(土) 11:42:03
int main(){
FILE *fp;
fp=starthtml();
writehtml(fp);
endhtml(fp);
return 0;
}
132デフォルトの名無しさん:2006/07/22(土) 12:06:03
>scanf("%s",&str);
>if(strcmp(str,":q")==0) break;
:

この辺りを1文字づつ処理するようにすれば問題なし
133デフォルトの名無しさん:2006/07/22(土) 15:07:19
scanfに&はイラネ
134デフォルトの名無しさん:2006/07/22(土) 18:23:30
>>132
1文字づつ処理しないとどんな問題おきる?
>>133
配列渡すときはいらねんだっけか?
135デフォルトの名無しさん:2006/07/22(土) 18:32:07
>>134
ググれ無能
136デフォルトの名無しさん:2006/07/22(土) 19:12:41
>>134
>>135を怒らすなよ無能
137デフォルトの名無しさん:2006/07/23(日) 00:53:12
>134

>> 配列でstr[1023];って指定してるから
>> 1023文字以上入力できねえwwwwwwwwwwwwwwww
138デフォルトの名無しさん:2006/08/22(火) 12:19:55
今日から学校が再開するまでの3週間の間に
C言語の予習をしようと思って勉強を始めたのですが、
どこら辺まで勉強すべきでしょうか?
139デフォルトの名無しさん:2006/08/22(火) 12:37:41
予習なんかすんな
140デフォルトの名無しさん:2006/08/22(火) 12:46:05
>>139
来年からはSEとして働くのでCの基礎を
マスターしておきたいのです。
141デフォルトの名無しさん:2006/08/22(火) 12:48:30
CができなくてもSEの内定通るんだな。
142デフォルトの名無しさん:2006/08/22(火) 12:57:21
SEはプログラマじゃないからね
143デフォルトの名無しさん:2006/08/23(水) 11:09:29
>>141
Javaは出来るんです。
144デフォルトの名無しさん:2006/08/23(水) 11:42:08
どこら辺まで勉強すべきかなんて会社側に聞けよ。
っていうか勉強に制限をかけようとしている時点で
SEとして終わっているが。
14518歳:2006/08/23(水) 12:31:51
こんにちは。C習おうと思いスクールに通おうと思うのですが…
ゃっぱり独学より覚えが断然早いんですかね?

来年の4月には、基本情報技術者も視野にいれて頑張るつもりです。

また独学の場合はどのような参考書がいいでしょうか?

アドバイスよろしくお願いします。
146デフォルトの名無しさん:2006/08/23(水) 12:45:52
スクールに通うのはやめておけ。ぼったくられるだけだ。
参考書に関しては過去に色々なスレで同じ質問が何度もされてきているから
それらを探した方がいい。
147デフォルトの名無しさん:2006/08/23(水) 21:04:06
これからC言語を学ぶ方へ
・独学で学ぶ知的好奇心が無いなら止めろ
・勉強には終わりが無いことを認識しておけ
・まともなアプリ等が作れるようになると楽しい
・なるべく仕事にしない方がいい
・気長にやれ。他の事で気分転換しる
・とりあえず自分でやってみれ
・時々、定義を再確認しる
・参考書などを一冊買うと統一性のある知識が得られ理解が早まる、かも
・アイデア帳などを常に持つといい、かも
148デフォルトの名無しさん:2006/11/23(木) 22:50:34
age
149デフォルトの名無しさん:2006/11/23(木) 23:12:39
懐かしいな。>>1はフリーターに戻ったのだろうかw
150デフォルトの名無しさん:2006/11/26(日) 01:13:52
確かに、仕事にはしないほうがいいわな。
嫌になってくるよ。

別の言語がやりて〜〜〜〜〜って。
151デフォルトの名無しさん:2006/12/11(月) 01:52:40
俺日記
何とはなしに分割コンパイルってかっこよさそうだから
無理やり3つ4つに分けて1個数十行程度のコード書いてみた
……数時間のにらめっこの末インクルードガードの大切さを知ったのだったとさ、ちゃんちゃんorz

にしても汎用的な関数作るのって難しいんだなぁ
どうしても書いてるうちにあれもこれもやらせたくなってしまう
OOとか夢のまた夢だろうなーまあぼちぼち頑張ってこ
152デフォルトの名無しさん:2006/12/11(月) 10:59:22
>>151
逆に考えるんだ。
関数にあれもこれも詰め込もうとするのではなく、如何に機能を削減するかが鍵だと。
153デフォルトの名無しさん:2006/12/11(月) 17:47:50
>>152
難しいなぁ……一つの関数で出来ることはやっちゃった方が効率良いじゃん、とか思ってやってしまう
自分みたいな素人がどう書いたところで有意な差なんて出ないって分かってはいるけど
構造化プログラミングの風上にも置けないぜ
154デフォルトの名無しさん :2006/12/19(火) 19:57:48
>>151の日記を読んだ感想

C言語を学ぼうとする姿勢の前向きさが伝わった。
OOPが夢なんてほどの物じゃないよ〜
Cだけでも立派なプログラム
C++でお粗末なクラスを使ったプログラム
あんたの言うとおりぼちぼち頑張れ〜
155デフォルトの名無しさん:2006/12/20(水) 20:35:05
>>153
コンパイラも賢いからそれ位下手したら同じコードを出力する。
そうでなくとも、今時のPCのCPUからすればその程度の効率の差なんて、
何百万〜何億秒分の一程度の違いにしかならない。
156デフォルトの名無しさん:2006/12/21(木) 10:50:31
>>151
ライブラリとか作る際にはソースが奇麗よりもいかに便利に使ってもらえるかが優先されるぞ。
だからやたら泥臭いソースを書く事になる。
157デフォルトの名無しさん:2006/12/21(木) 20:34:41
中身が泥臭くても、見た目(インタフェース)が良ければ由。
158デフォルトの名無しさん:2006/12/23(土) 15:50:29
な、何故急にこんなにレスが
確かにコンパイラ一つでやって来てるから、プロファイラとかデバッガも分からんのよね
そんな状態で早さ求めてもしょうがないので、これでもかってくらいに関数作ってしまおう
いろいろありがとう
159デフォルトの名無しさん:2007/01/04(木) 02:31:34
最近、仕事でコードを見ると吐き気がするよ。
退職した方がいいのかな。。。。。。

と、人生相談をここでしてみる。
160デフォルトの名無しさん:2007/01/10(水) 13:59:42
コードでオナニーできる人もいるというのに
161デフォルトの名無しさん:2007/01/10(水) 14:35:28
自分のコードじゃなくて他人のコードなら時々あるね
良いコード見ながら仕事するのと
糞コード見ながら仕事するのとでは
全然作業効率が違う
162助けて・・・:2007/01/19(金) 00:03:50
西暦入れて十二支を出すプログラムが出来ない!!
天才様助けて・・・超初心者です・・
分かりやすいプログラム教えて下さい・・・
163デフォルトの名無しさん:2007/01/19(金) 00:16:01
>>162

西暦を12で割った余りで条件分けしたらどう?
164助けて・・・:2007/01/19(金) 00:27:54
よくわかりません・・・
頑張ってみます・・・
165デフォルトの名無しさん:2007/01/19(金) 00:46:31
つまらんコードをぺたぺた貼り付けるスレはここですか?
166デフォルトの名無しさん:2007/01/19(金) 01:12:10
今年は2007年で、これを12で割った余りは3。
それを「亥」とすると、4は「子」、

int seireki,x;
printf("西暦:");
scanf("%d",&seireki);
x = seireki % 12;

if (x == 3) printf ("亥\n");
if (x == 4) printf ("子\n");

以下略

12で割った余りは0〜11が出てくるので、それで判定
判定はswitch〜caseでもいいし、お好みで。
167助けて・・・:2007/01/19(金) 01:44:44
超すごい!!天才ですね!!
ありがとうございます!
168デフォルトの名無しさん:2007/01/19(金) 03:12:30
あーあ、マルチに教えちゃって
169デフォルトの名無しさん:2007/01/19(金) 04:42:34

>if (x == 3) printf ("亥\n");
>if (x == 4) printf ("子\n");
>
>以下略

死ねよ

170デフォルトの名無しさん:2007/01/19(金) 05:06:09
printf("%.2s\n", "申\酉戌亥子丑寅卯辰巳午未" + x * 2);
171デフォルトの名無しさん:2007/01/19(金) 08:41:08
>>170
まさかお前、ShiftJis未対応のコンパイラなんか使っているのか?
172デフォルトの名無しさん:2007/01/22(月) 18:33:30
>>169
死ぬ必要はないだろ。

>>166
荷物まとめて実家帰れよ。
173デフォルトの名無しさん:2007/04/08(日) 14:24:54
3級取ったー
174デフォルトの名無しさん:2007/04/17(火) 23:27:22
fprintfで構造体をファイルに書き込むことはできないんでしょうか。
175デフォルトの名無しさん:2007/04/17(火) 23:48:06
できます。しかし、余り意味がないのでお勧めはしません。
176デフォルトの名無しさん:2007/04/18(水) 22:03:59
>>175
そうなんですか
余り意味がないとはなぜなのですか?
177デフォルトの名無しさん:2007/04/19(木) 00:33:32
>>176
fprintf()では出力するものを文字列として取り扱うので、
「構造体をメンバごとに出力する」ことはできても「構造体のメモリイメージを出力する」ことはできないのは判る?
178デフォルトの名無しさん:2007/04/20(金) 22:14:32
>>177
なんとなくわかります。
179デフォルトの名無しさん:2007/04/23(月) 11:29:58
文字列として扱おうとするfprintf()ではなくて、メモリイメージのまま扱えるfwrite()なら話は違うのだろうけどね。
180デフォルトの名無しさん:2007/05/20(日) 20:35:53
独習c約数表示でつまずき中。自分の馬鹿さ加減に愕然としてる。
181デフォルトの名無しさん:2007/05/20(日) 20:42:42
182デフォルトの名無しさん:2007/08/07(火) 11:06:22
int main(int argc,char *argv[]){}だけで
アプリケーションの引数を取得できるんのか。感動〜。
183デフォルトの名無しさん:2007/08/07(火) 13:17:08
やっぱ人によって違うもんだな
どうやってその仕組みを実現してるのか知りたかった俺はがっかりした
184デフォルトの名無しさん:2007/09/18(火) 16:29:48
数字入力したときに0が表示されないんだけどなんでかなー?
185デフォルトの名無しさん:2007/09/24(月) 08:29:24
パソコンを買って、いざ家で勉強しようと思っても、うまくコンパイラ等がインストール
できません。
仕方なくROM付の教材を買ってきてそこからダウンロードしようと思ったのに
それもうまく出来ません・・・。
助けてください!!!!お願いします!!!!
186デフォルトの名無しさん:2007/09/24(月) 11:04:31
>>185
マルチするな。死ね。
187デフォルトの名無しさん:2007/09/24(月) 11:15:40
プログラミングが上達するコツ
http://pc11.2ch.net/test/read.cgi/tech/1190555031/
188デフォルトの名無しさん:2007/09/24(月) 12:57:09
>>185
パソがハイスペック過ぎるから
中古のを買いなおしな
189デフォルトの名無しさん:2007/09/24(月) 14:58:08
>おまいら!今日からC言語を学んでいくぞー!
一人じゃ何もできないんですか。
190デフォルトの名無しさん:2007/09/24(月) 22:19:47
俺は独学で九九を表示できるまでになったし
>>1は努力が足りないぞ
191デフォルトの名無しさん:2007/09/24(月) 22:26:12
その程度で人にものを言える立場かよm9(^Д^)プギャー
192デフォルトの名無しさん:2007/09/24(月) 22:41:04
俺は独学で、Hello,wrold! を印字するプログラムかけたし
>>1は努力が足りないぞ
193デフォルトの名無しさん:2007/09/24(月) 23:21:27
その程度で人にものを言える立場かよm9(^Д^)プギャー
194デフォルトの名無しさん:2007/09/25(火) 07:12:16
俺は独学でコンパイラをインストール出来るようになったし
>>1は努力が足りないぞ
195デフォルトの名無しさん:2007/09/25(火) 12:12:30
その程度で人にものを言える立場かよm9(^Д^)プギャー
196デフォルトの名無しさん:2007/09/25(火) 13:51:23
俺は独学で、華氏を摂氏の変換するプログラムかけたし
>>1は努力が足りないぞ
197デフォルトの名無しさん:2007/09/25(火) 14:16:08
その程度で人にものを言える立場かよm9(^Д^)プギャー
198デフォルトの名無しさん:2007/09/25(火) 15:57:53
俺は独学で、ガウス消去法のプログラムかけたし
>>1は努力が足りないぞ
199デフォルトの名無しさん:2007/09/25(火) 16:37:52
その程度で人にものを言える立場かよm9(^Д^)プギャー
200中卒引き篭もりブタニート:2007/10/08(月) 05:26:19
よろしくおねがいします
201デフォルトの名無しさん:2007/10/08(月) 05:29:23
悪いけど気持ち悪いからこっち来ないで
202デフォルトの名無しさん:2007/10/08(月) 07:18:21
203デフォルトの名無しさん:2007/10/08(月) 11:43:30
WIKIの課題ってVS05でおk?
204デフォルトの名無しさん:2007/10/19(金) 00:02:16
205デフォルトの名無しさん:2007/10/19(金) 00:16:07
独学で何もないとこからバブルソートくらいは組もう…。
昔課題ででてソートアルゴリズムなんか知らなくて
自力でバブルソートのアルゴリズム考えた。
(そのころは表示と分岐とループが教えられた程度)
でもクラスメイトの分布数えソートに負けた…。
先生がどんなデータをソートするか言わなかったから自分はやめたのに…
くすん(;_;)
206デフォルトの名無しさん:2007/10/23(火) 23:08:35
Visual C++ 2005 Express Edition を使ってます。
C言語を練習したいんですが、コンパイルしようとしても

C++ は int を既定値としてサポートしていません

とか言われてしまいます。どうやったらC言語に対応させられますか?
そもそもこれはC++専用なんですか?
207デフォルトの名無しさん :2007/10/24(水) 00:08:12
>>206
どうゆうコード書いたかしらんが
ファイル拡張子を.cppから.cにすれば勝手に理解してくれる
208デフォルトの名無しさん:2007/10/26(金) 11:19:35
初心者です。
研究でセンサーのデータをとりました。
これをもとにセンサの配置などをシミュレーションしてみたいのですが
何の言語を使えばいいのか、全く分かりません。
何かヒントなどあれば教えてもらえませんか??
209デフォルトの名無しさん:2007/10/26(金) 16:27:26
>>206
main()の頭に型名の修飾がついてない(int main()になってない)とか、そんな問題じゃないの?
210デフォルトの名無しさん:2007/10/26(金) 20:14:14
>>208
先輩に聞け。
こんなところで聞くような奴が、よく研究とか言えるな。

シミュレータ作るなんて、何年後になるんだろうな。
211デフォルトの名無しさん:2008/05/09(金) 23:16:42
ぽぽい
212デフォルトの名無しさん:2008/05/10(土) 13:23:25
includeファイルがオープンできないとコンパイラに怒られました
パスもしっかりしてるのに、どうすればいいんですか?
213デフォルトの名無しさん:2008/05/10(土) 13:37:42
>>212
状況を他人に説明できるように、コミュニケーション能力を鍛えてみましょう。
214デフォルトの名無しさん:2008/11/12(水) 22:41:10
質問なんですが
12月から大学でC言語プログラミングの授業がはじまります。
初めてプログラミングをするので大学指定のテキスト意外にも
初心者でも分かり安いテキストを購入したいと思います。
オススメのテキストはありますか?
215デフォルトの名無しさん:2008/11/17(月) 12:35:58
読んだだけで理解できるほどプログラミングは簡単ではありません。
テキストを増やすくらいなら、手数を増やしましょう。
216デフォルトの名無しさん:2009/02/23(月) 19:21:53
>>214
大学指定のテキスト + K&R
これで分からなければ橋渡しの本を買え
217デフォルトの名無しさん:2009/04/16(木) 00:48:35
そうかなあ
218デフォルトの名無しさん:2009/04/19(日) 23:50:59
またそういうことを
219tor.rootkit.de
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その2
『お前が規制系キャップ取れるか審査してやるよ』

http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★

> 36 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:31:30.02 ID:PVAf+dux0
> >>33
> キャップとコテハンの違いは何?

> 46 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:38:05.34 ID:PVAf+dux0
> >>45
> その回答では落ちるなw
> 答えは教えないがw

> 50 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:41:29.96 ID:PVAf+dux0
> Q.キャップとコテハンの違いは何?
> A.2ちゃんねるのボランティアの登録制度

> それがお前の答えかw

> 52 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:43:10.06 ID:PVAf+dux0
> まぁ、どうせ正解が出るわけもないし、次の問題。
> 君が思う面白いスレはどんなの?
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください