真・C言語レビューしてみる

このエントリーをはてなブックマークに追加
1仕様書無しさん
問題です
コメントをはずしても「まったく」問題ないのは何番でしょう?

#include <stdio.h>

void main(void)
{
 char moji[300];

//moji[300] = "こんにちは";    //・・・@
//strcpy([300]mozi, "こんにちは");  //・・・A
//"こんにちは";           //・・・B

return;
}

ひっかけですが。思いついたら書きますね。
269式フリーPG ◆hND3Lufios :2005/12/26(月) 23:27:42
#include <string.h>
3仕様書無しさん:2005/12/26(月) 23:28:18
>>1
コンパイラを指定しやがれ。
4仕様書無しさん:2005/12/26(月) 23:29:10
>>1
機種依存文字使うな
5仕様書無しさん:2005/12/26(月) 23:30:28
これ、このまんまじゃコンパイル通りません。
本当にありがとうございました。
6仕様書無しさん:2005/12/26(月) 23:32:32
どれも問題ない。
>>2はひっかかったひと
769式フリーPG ◆hND3Lufios :2005/12/26(月) 23:34:20
いやん
81:2005/12/26(月) 23:37:47
僕がへたでごめんyo

>>2、解です!と言いたかったんだが・・・
>>6そうなの?www「まったく」問題ないのだぞ

Aに関しては[0]mojiとか、はみ出さなければOK。知ってるか。
もちろん上司には蹴られるよ。
Bも定数になるからおkだね。
9仕様書無しさん:2005/12/26(月) 23:39:42
全部問題あり
10仕様書無しさん:2005/12/26(月) 23:40:28
ぷぷぷC厨の爺がアホされしておるわい
11仕様書無しさん:2005/12/26(月) 23:43:07
>>10
意味不明
12仕様書無しさん:2005/12/26(月) 23:43:55
>>6
コンパイルしてみ
13仕様書無しさん:2005/12/26(月) 23:48:04
>>12
コンパイラはどれでも同じ結果ですか?
ちょっと試してみようかと
141:2005/12/26(月) 23:49:59
gccなら-Wall指定でよろ
1569式フリーPG ◆hND3Lufios :2005/12/26(月) 23:51:41
gccだとAはとおらんね。
161:2005/12/26(月) 23:52:53
だから通らんと言っておるが
[299]ならいけるかな。(300は定義してないから駄目だけど。)
17仕様書無しさん:2005/12/26(月) 23:54:47
test.c:9: error: parse error before '[' token

0でも299でも通りません。
ありがとうございました。
18仕様書無しさん:2005/12/26(月) 23:57:10
C厨ってアフォばっかwwwwwwwwwwwwwwwwwww
19仕様書無しさん:2005/12/26(月) 23:58:31
もしかして・・・・

strcpy([300]mozi, "こんにちは");  

は、

strcpy([300]moji, "こんにちは");  

と書きたかったのか?
201:2005/12/26(月) 23:59:08
(照
2169式フリーPG ◆hND3Lufios :2005/12/26(月) 23:59:48
とりあえず、俺が最速正解だったと言うことで。
22仕様書無しさん:2005/12/27(火) 00:06:05
>>18
結構奥深いよ。
この問題はちょっと答えられなかった。
勉強になりますな。
231:2005/12/27(火) 00:11:20
>>21おめ!
>>22d!良かったらまた。

あと、下心としては俺も回答者に略
24仕様書無しさん:2005/12/27(火) 07:45:43
加齢臭漂ってるな
25仕様書無しさん:2005/12/27(火) 12:13:23
コンパイラが呆けてそうだな
哀れだ
26:2005/12/27(火) 16:22:35
ほうけるよw実用ではない
27仕様書無しさん:2005/12/27(火) 18:31:15
真・C/C++デバッギングシミュレーター
http://science4.2ch.net/test/read.cgi/sim/1135488225/
28仕様書無しさん:2005/12/27(火) 18:51:03
$>javac unko.java
29:2005/12/27(火) 19:37:24
>>27
30くさかべよーいち:2005/12/27(火) 23:10:46
>void main(void)

int main(void)では? ;-)
3169式フリーPG ◆hND3Lufios :2005/12/27(火) 23:12:13
遅いよ。日下部のおっさん
32:2005/12/28(水) 00:21:02
ま、ぶさなコードだよね
わざとだけどw

解答ageてことで。
>>2には悪いが、インクルードが必要なのは
Aのみだから、コンパイルエラーかどうかの観点で言えば
単純にBが正解になる。但し「100;」みたいに
意味ないコードだから、当然警告になるよ。

結論としては>>9が当たり、か。
まあお互い実際はちゃんと書こうねー
33仕様書無しさん:2005/12/28(水) 00:29:52
class Unko{
 public static void main(String args[])
 {
  String s="Baka", s1 = "UnkonaJavaTyuWara";
  while(true){
   s = s + s1;
   System.out.print(s);
  }
 }
}
34:2005/12/28(水) 01:07:29
つ[

強制終了!
35仕様書無しさん:2005/12/28(水) 19:20:26
>32
> 当然警告になるよ。
「まったく」問題ない?
重箱の隅だけどわざわざ強調してたから気になった
36:2005/12/29(木) 00:03:14
乙。
37ペンチャマン ◆iyx/0deoUw :2005/12/29(木) 04:00:11
当スレの1です。または某板のアナーキストです。

sageても訪れるあなたへ・・

リンクリストの問題です。詰まる人は詰まるでしょう。
幾つか参考書を見ましたが、なんかどれも冗長だったので。
こんくらいシンプルに書ければまあよいかな、と。


【ルール】
長いので、
@ 次レスでは必要なヘッダ情報を開示。必要最低限。揚げ足はあってもいいが・・
A 問題ソース(問題@穴埋め)。/*@*/、/*A*/、/*B*/を適当な構造体名に置き換える事。
B 問題A。

極力ロジックを頭で考えて下さい。
「ここが分からない!」という質問がもしあれば受け付けます。
コンパイルすればわかる「だけ」の問題は出してもしょうがないしね。。理解しないと。
(Aは、見て3秒以上掛かったらヤヴァいかもねw)
38ペンチャマン ◆iyx/0deoUw :2005/12/29(木) 04:01:54
//crev.h

//include------------------------------------------------------
#include "include_all.h" //必要なインクルードファイルぜーんぶ


//structure----------------------------------------------------
typedef struct crev{
 int   i;      //ID
 char  str[STRMAX]; //STRMAX=123
 struct crev *next;
 struct crev *prev;
}CREV;          //なんかIDと人の名前、みたいな(用途は不明ww)


//function-----------------------------------------------------
int id_name_ask( int *o_int, char *o_chr );
       //IDと名前をscanfで入力させて構造体に代入するお
39ペンチャマン ◆iyx/0deoUw :2005/12/29(木) 04:07:41
//linklist.c

//id_name_askで「ぬるぽ」と入力されるまで
//リンクリストを繋げます。面倒な説明は略!

_error_no linklist( void )
{
    _error_no en = ENOERROR;//enumエラーコード(ENOERROR=エラーなし)
    CREVIEW *pCur=NULL, *pDmy=NULL, *pTop=NULL;

    while(1)
    {
        if( !(/*@*/ = (CREVIEW*)malloc(sizeof(CREVIEW))))
        {
            en = EAL;//enumエラーコード(EAL=アロケーションエラー)
            break;
        }
        memset(/*@*/,0,sizeof(CREVIEW));

        if( !id_name_ask( &/*@*/->i, /*@*/->str ))
        {
            /*@*/ = NULL;
            break;
        }
40ペンチャマン ◆iyx/0deoUw :2005/12/29(木) 04:08:30

        if(!/*B*/)
        {
            /*B*/ = /*@*/;
            /*A*/ = /*B*/;
        }
        else
        {
            /*B*/->next    = /*@*/;
            /*B*/->next->prev = /*B*/;
            /*B*/       = /*B*/->next;
        }
    }

    for( /*B*/=/*A*/; /*B*/; /*B*/=/*B*/->next)
    {
        //表示
        printf("%d\n",/*B*/->i);
        printf("%s\n",/*B*/->str);
    }

    return en;
}

//(ここまで)
41ペンチャマン ◆iyx/0deoUw :2005/12/29(木) 04:10:33
あ、番号振り忘れた。

問題A
の問題。

このソースで決定的に問題がある「あれ」について、指摘せよ。
本当にありがとうございました。
42仕様書無しさん:2005/12/29(木) 10:10:42
なんだよ双方向リストかよ
新人研修みたいだな
アロケーションエラーが発生したら、確保済みの領域をfree(ロールバック)する
ロジックを入れたほうがいいぞ。この例ではプロセス終了になるから
いいのかもしれんが、ミドルウエア開発では必要になるテクニック。
43ペンチャマン ◆iyx/0deoUw :2005/12/29(木) 11:18:58
まあ、Aの答えってことで42正解age。
ところでちゃんと書けるかな?w
その通り・単なるフリーじゃだめだよ。

もっとシンプルな問題がいいんだが、夜中にだらだら書いちゃった。
反省。@の答えは?
44仕様書無しさん:2005/12/29(木) 14:10:25
確保された添え字またはカウンタ位置からデクリメントしながら
freeする
45ペンチャマン ◆iyx/0deoUw :2005/12/29(木) 14:41:18
んで穴埋めは?ビルド通れば良し!簡単だ
46仕様書無しさん:2005/12/29(木) 15:52:21
穴埋めはセーブポインタとprev,nextポインタにアドレスを
的確にセットする
prevの先頭にはNULL
nextのラストにもNULLをセットして前後の終了位置をロジックで
判断できるようにする。
47仕様書無しさん:2005/12/29(木) 16:11:06
>>46レスポリシーw
もうちょい待つか…
48仕様書無しさん:2005/12/29(木) 18:30:37
漏れならif..elseにはしないがな
なんかダサいコードだなw
49:2005/12/30(金) 03:58:32

2項演算子!?
50ペンチャマン ◆iyx/0deoUw :2005/12/30(金) 22:12:36
あれま。誰か問題出せよ
51仕様書無しさん:2006/01/01(日) 23:01:40
リスト構造と木構造は新人研修必須項目だな
52仕様書無しさん:2006/01/01(日) 23:09:07
高級言語だけ弄ってると、その辺はライブラリに頼ってしまうからね。
C/C++でも実務ではSTLとかMFC/ATLに頼る場合が多いけど、
研修の内に自力での実装を学んでおくべき。
53仕様書無しさん:2006/01/01(日) 23:28:05
次のアルゴリズムで,for文の中の人がやってる処理の
意味は何かわかるかな〜?( ・ω・)∩

unsigned char a = 13;
unsigned char b = 178;

unsigned int x = a;
unsigned int y = b;
unsigned int z = 0;
for(int i = 0;i < sizeof(unsinged char);i++){
  z += (y & 0x1) ? x : 0;
  x <<= 1;
  y >>= 1;
}
54仕様書無しさん:2006/01/01(日) 23:29:45
>>53
毎度毎度sizeof関数実行すると
処理速度が遅くなってよろしくない気がする
55仕様書無しさん:2006/01/01(日) 23:31:33
sizeofは関数じゃないぞ
56仕様書無しさん:2006/01/01(日) 23:31:34
sizeofは関数じゃないぞ・・・・
57仕様書無しさん:2006/01/01(日) 23:32:32
sizeofは関数じゃないぞ
5855:2006/01/01(日) 23:32:46
あ、かぶった(w
59仕様書無しさん:2006/01/01(日) 23:33:38
sizeofは関数じゃないぞ
6054:2006/01/01(日) 23:34:41
もう勘弁してくれ。・ ゚・。* 。 +゚。・.。* ゚ + 。・゚・(ノД`)
6169式フリーPG ◆hND3Lufios :2006/01/01(日) 23:35:34
正月休で忘れさられた池の鯉に餌を投げ込んだかのようだ。
62仕様書無しさん:2006/01/01(日) 23:41:27
>>54
(´・ω・`)カワイソス
63仕様書無しさん:2006/01/01(日) 23:58:25
どっちにせよ、1回しか実行されんのだから、大差ねーよ。
64仕様書無しさん:2006/01/01(日) 23:59:04
一回しか実行されんのだったら
for文使わなくても(ry
65仕様書無しさん:2006/01/02(月) 00:01:21
>>64
(´・ω・`)カワイソス
66仕様書無しさん:2006/01/02(月) 00:03:23
ていうか,sizeof(組み込み型)ってコンパイラが定数化してくれないの?
67仕様書無しさん:2006/01/02(月) 00:08:13
もう
#include UNSIGNED_CHAR_SIZE 1
でいいじゃん
6853:2006/01/02(月) 00:10:41
スマソ,問題ミスった orz

i < sizeof(unsinged char)

i < sizeof(unsinged char)*8
だった.

今は反省している.

unsigned char a = 13;
unsigned char b = 178;

unsigned int x = a;
unsigned int y = b;
unsigned int z = 0;
for(int i = 0;i < sizeof(unsinged char)*8;i++){
  z += (y & 0x1) ? x : 0;
  x <<= 1;
  y >>= 1;
}
6953:2006/01/02(月) 00:15:39
芯でお詫びをば・・・

int y,o_o;
o_o = 1;

y=-(o_o);
70ペンチャマン ◆iyx/0deoUw :2006/01/03(火) 11:26:16
う、うめ
71仕様書無しさん:2006/01/10(火) 12:40:13
「ほらね、レビューなんて莫迦のする事だという事が判るだろう?」
72ペンチャマン ◆iyx/0deoUw :2006/01/19(木) 19:33:41
うるちゃいなあもう

久々に問題。
よくC++で、クラスの説明について「構造体に関数を定義できる」な〜んて
ことが書いてありますが、あえて構造体でやるとどうなりますか?

簡単なソースを書いてみよ
73C言語歴0.2週間 ◆DQLheIyZTs :2006/01/19(木) 20:08:18
>>72
構造体と関数をただ単に普通に使うだけだろ?
早い話が、カプセル化しないCの状態と同じになる。
7469式フリーPG ◆hND3Lufios :2006/01/20(金) 01:38:10
ヒント:EssentialCOM
75ペンチャマン ◆iyx/0deoUw :2006/01/20(金) 21:42:47
>>73ぜんぜん違う
>>74う〜ん
76仕様書無しさん:2006/01/21(土) 14:29:07
クラスは異なるクラスで共通の名前のメソッドやプロパティに
アクセスするのが醍醐味。
構造体でやろうとすると、メソッドにアクセスするときその構造
体の定義がわからないといけないので、簡単にとはいかないような
希ガス。
77仕様書無しさん:2006/01/21(土) 14:39:47
自力vtable書けば宜しい。
ただ、コンストラクタを自分で呼び出す必要があるんで
あんまり意味がない。
(Xt Intrinsics なんかはインスタンスを生成する関数を用意してるが)
78仕様書無しさん:2006/01/27(金) 01:33:30
struct Unko{
 (void*)shikkoo*;
};
79仕様書無しさん:2006/02/18(土) 21:43:10
次のコードをコンパイルして実行すると"take"と印字されると
思ったのですが、Bus Errorとなりました。
結果が腑に落ちないのですが、 文字列のリテラルを変更したから
エラーになったという理解で正しいでしょうか。環境はMac OS X
(10.4.5)でコンパイラのバージョンは gcc 2.95.2です。
よろしくお願いします。

#include <stdio.h>

int main(int argc, char* argv[])
{
char* array[] = {"sake", "toba", "ikura"};
char** p = array;

(**p)++;
printf("%s¥n", *p);

return (0);
}
80仕様書無しさん:2006/02/18(土) 21:53:55
どう見ても板違いだったので他の板に投稿します。
ありがとうございました。
81仕様書無しさん:2006/03/26(日) 22:31:52
愛子
82仕様書無しさん:2006/03/27(月) 08:49:42
ム板に移動すると色々教えてくれるかもしれんな。
83仕様書無しさん:2006/03/27(月) 15:36:43
>>82>>81 へのレスなんだろうか…?
84仕様書無しさん:2006/03/28(火) 00:30:58
関数ポインタを構造体のメンバで定義すれば良いだけな希ガス。
85仕様書無しさん:2006/04/10(月) 11:00:11
皆さん、注目してください!!!!!!!!!!!!!!!!!
 
C言語厨の正体は高卒であることが発覚しました!
さあ、Java叩きに必死になっているC言語を思う存分報復し虐めてあげましょう!!!


専門卒や高卒でPG/SEの人っているの?Part2
http://pc8.2ch.net/test/read.cgi/prog/1141003614/
86仕様書無しさん:2006/04/17(月) 07:52:44
 C言語なんて終わった言語。
 終了
87仕様書無しさん:2006/04/17(月) 10:00:30
ワラタ。

真・C言語厨をレビューしてみる


おもろいスレタイだな

低脳C言語厨をレビューしてみるなんてなw
88仕様書無しさん:2006/04/20(木) 17:44:13
プププ C言語厨は情報処理学会にすら入会できない低脳なのですね

情報処理学会=プログラマの権威
http://pc8.2ch.net/test/read.cgi/prog/1141487104/
89仕様書無しさん:2006/04/26(水) 22:05:03
ぬるぽ
90仕様書無しさん:2006/04/26(水) 22:10:32
Java6のVMは昔ながらのC言語で記述されております。
馬鹿なJava厨は自分たちの実行する糞トロクサコードが
C言語の古臭いライブラリ関数で踊らされていることすら知りません
91仕様書無しさん:2006/04/27(木) 02:10:49
WindowsのNTカーネルやUNIXはC言語で書かれてるし、
どんな言語でも結局はC言語の上で動いてると思うが。
92仕様書無しさん:2006/04/27(木) 12:23:36
>>91
>結局はC言語の上で
コンパイルされた時点でネイティブコードになる処理系では
それは最早「言語が xx」などとは呼べません。
>動いてると思うが。
思うのは勝手ですが、公の場でその発言は
頭の悪さを露呈する効果しかなかったようですね。
93仕様書無しさん
91…
せめて「Cでも書ける」にしとけ