C言語なら俺に聞け! Part 126

このエントリーをはてなブックマークに追加
952超初心中の初心者:2006/05/11(木) 16:04:32
>>948
「共同体」:全体で1つしか値を記憶することができない、同時に別の値を記憶することが出来ない。
つまり、共同体のメンバは、一度に1つだけしか値を記憶できない。

っと、参考書はこう書いた・・・
953デフォルトの名無しさん:2006/05/11(木) 16:06:04
それは共用体。
それに、配列や構造体を含んでれば、
複数の値を記憶できる。
954デフォルトの名無しさん:2006/05/11(木) 16:06:25
理解するんじゃない。感じるんだ。
955超初心中の初心者:2006/05/11(木) 16:08:15
感じるって・・・?
956デフォルトの名無しさん:2006/05/11(木) 16:17:19
良いコードをたくさん読んで、自分でもコードを書いて経験を積めってこと。
957デフォルトの名無しさん:2006/05/11(木) 16:18:46
>>944
いや。UNIXでメモ帳みたいなエディタは emacs の方だ。
但し機能は雲泥の差。
958デフォルトの名無しさん:2006/05/11(木) 16:19:21
>>954
ホースを使え。
959超初心中の初心者:2006/05/11(木) 16:21:25
ただ読んでいて、理解出来なかったら、意味ないのでは?
ある程度の理解はやはり必要でしょ?^^;;
960デフォルトの名無しさん:2006/05/11(木) 16:25:53
ただ読むのはバカのやることだ。
961デフォルトの名無しさん:2006/05/11(木) 16:26:55
そんな理屈を捏ねている暇に書け。そして間違えろ。
そうするうちにどうすれば使えるか感じられるようになる。
そうして更に書けば、自ずと理解できているもんだ。
962デフォルトの名無しさん:2006/05/11(木) 16:31:02
>>957
emacsは別途インストールしないとダメじゃないか
/binに入っていない事も致命的に非標準
963デフォルトの名無しさん:2006/05/11(木) 16:39:37
理解するまでは弄くり倒す、分かってきたら他人のソースを見て勉強。
964超初心中の初心者:2006/05/11(木) 16:43:08
なるほど・・・
965デフォルトの名無しさん:2006/05/11(木) 17:34:32
どうすれば二つ以上のcやcppを使えるのか・・
#include "xxxxx.cpp"とかは書いてないし
966デフォルトの名無しさん:2006/05/11(木) 17:35:25
分割コンパイルでググれ
967デフォルトの名無しさん:2006/05/11(木) 17:45:58
>>965
> #include "xxxxx.cpp"
これでも出来るよ。激しくお勧めできないけど

多分、コンパイルとリンク違いがわかってないんだろうな
968デフォルトの名無しさん:2006/05/11(木) 17:58:16
「リンク違い」ってなんだ?
969デフォルトの名無しさん:2006/05/11(木) 18:05:55
「の」が抜けたんだろうよ。
970デフォルトの名無しさん:2006/05/11(木) 18:19:26
>>965
CやC++はけっこうファイル構造に依存していたりする。staticやexternなんかはそのためのキーワード。
最も依存してるのはJavaで1ファイル1クラスが推奨されている。
971デフォルトの名無しさん:2006/05/11(木) 18:26:12
>>962
それはOSやディストリビューションやインストール時の指定によって変わる。
972デフォルトの名無しさん:2006/05/11(木) 18:26:54
>最も依存してるのはJavaで1ファイル1クラスが推奨されている。

Java 使った事あんの?
public クラスの事なら1ファイル1クラスは推奨じゃなく強制。

非 public クラスを作ることは問題ないが、
それを作るかどうかは隠す必要があるかどうかで決めることで、
推奨だの非推奨だのそういう問題じゃない。
973デフォルトの名無しさん:2006/05/11(木) 18:27:31
>>970
惜しい。Java は 1 ファイル 1 public クラス、だ。
public でないクラスは同じファイルにいくつあってもいい。
974デフォルトの名無しさん:2006/05/11(木) 18:58:14
CスレでJava使ったことあるの?煽っても無意味じゃねーか?

ちなみに
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
の3章ではpubic classかinterfaceと関係している場合は
privateなclassとinterfaceを同じソースファイルに入れても良い
とかいうニュアンスで書かれてる。
意訳すれば原則1ファイル1クラスと言えなくもない。
975デフォルトの名無しさん:2006/05/11(木) 19:00:41
>>974
>>972-973 をもうちょっと良く嫁。
976デフォルトの名無しさん:2006/05/11(木) 20:03:09
WNDCLASSEX構造体ってMSDNに載っていない??
977デフォルトの名無しさん:2006/05/11(木) 20:11:03
978デフォルトの名無しさん:2006/05/11(木) 20:11:09
スレ違い
979デフォルトの名無しさん:2006/05/11(木) 20:24:56
まず問題を冷静に吟味してCの話か否かをはっきりさせてから質問しましょう。
質問する前には最低限検索を。

GUIなどの標準Cではできない事の質問,ソース丸投げ、宿題、書籍 は専門の別スレッドがあるのでそこへさようなら。

エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。

C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/

他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
前スレ
C言語なら俺に聞け! Part 126
http://pc8.2ch.net/test/read.cgi/tech/1145799128/




↓の人スレ立てお願い
980デフォルトの名無しさん:2006/05/11(木) 21:43:55
とくに何もしないことを指して

#define NOP 0

〜〜〜

 NOP;

の様に書いたら、わずかでもCPUの負担になりますか?
(コンパイル時でなく、実行時)
981デフォルトの名無しさん:2006/05/11(木) 22:06:56
>>980
0; は何の動作もしないので、
おそらく最適化しようがしまいが削られて
全く負担にならない。

全く意味のない処理を入れてみても、
最適化してると削られる事がある。
何か計算して、最終結果をどっかで使わないと。
プログラムの最後に出力するだけでもいい。
982デフォルトの名無しさん:2006/05/11(木) 22:09:57
volatile修飾した変数に適当に突っ込むと消えないと思う
983デフォルトの名無しさん:2006/05/11(木) 22:10:13
0;が実行時にどのように処理されるというのか
984デフォルトの名無しさん:2006/05/11(木) 22:14:33
>>980
ならない
あなたは何も「要求」を書いていないのだから
985デフォルトの名無しさん:2006/05/11(木) 22:15:35
>>981-984
判りました
どうもありがとうございます
986デフォルトの名無しさん:2006/05/12(金) 01:22:10
申し訳ないですが真偽を教えてもらいたくコピペしました

あるソフトウェアのソースコードにこんな関数があるんです。C(C++?)です。

char *trimstr(char *s1)
{
while (*s1)
{
if ((*s1 == ' ') || (*s1 == '\t'))
s1++;
else
break;
}

char *s = s1;

s1 = s1+strlen(s1);

while (*--s1)
if ((*s1 != ' ') && (*s1 != '\t'))
break;

s1[1] = 0;

return s;
}

このソフト、Linuxで動かすと、頻繁にセグメンテーションフォルトで落ちてしまいます。
デバッガで原因を調べてみたら、この関数に長さ0の文字列を渡すと起こる*ことがある*ようです。

私はC初心者なんで確認したいんですけど、この関数に長さ0の文字列を渡すと メモリが破壊されますよね?
987デフォルトの名無しさん:2006/05/12(金) 01:30:13
メモリ破壊と言うか何というか(^^;
これ書いた奴死ねって感じ?
988デフォルトの名無しさん:2006/05/12(金) 01:37:08
ソースに間違いまたは通常やってはいけないことがあれば指摘してもらえるとありがたいです
989デフォルトの名無しさん:2006/05/12(金) 01:44:13
>while (*--s1)
> if ((*s1 != ' ') && (*s1 != '\t'))
>  break;
' ' や '\t' が見つからなければ
文字列の先頭を超えて逆走。
というか、*s1 で何を判定しようとしてるんだ?
s と s1 との比較だろう、ここは。
990デフォルトの名無しさん:2006/05/12(金) 01:54:01
教えていただきどうもありがとうございます
991デフォルトの名無しさん:2006/05/12(金) 03:01:31
質問させていただきます
null文字というのはスペースということなのでしょうか?
例えばHTMLファイルの中にnull文字が含まれる可能性はありますでしょうか?
null文字に付いて詳しく教えていただけたらありがたいです
992デフォルトの名無しさん:2006/05/12(金) 03:08:10
0x0000のことだが
993デフォルトの名無しさん:2006/05/12(金) 03:38:21
文字コードが 0 の文字のこと。
994デフォルトの名無しさん:2006/05/12(金) 03:49:58
文字コードが0の文字が何を意味するのか聞きたいんだろ
995デフォルトの名無しさん:2006/05/12(金) 03:52:53
C だと文字列の終端を表すのに使われる。
特殊な状況だともうちょい利用されるが。
996デフォルトの名無しさん:2006/05/12(金) 03:53:49
> null文字というのはスペースということなのでしょうか?

いいえ。

> 例えばHTMLファイルの中にnull文字が含まれる可能性はありますでしょうか?

はい。
997デフォルトの名無しさん:2006/05/12(金) 03:58:51
>>996
> > 例えばHTMLファイルの中にnull文字が含まれる可能性はありますでしょうか?
>
> はい。
ホント?
998デフォルトの名無しさん:2006/05/12(金) 04:03:27
うっかり間違えて、通常のテキストファイルにぬるっと入り込んでることもあるよな?
999デフォルトの名無しさん:2006/05/12(金) 04:09:04
別に HTML に null 文字入れることは可能。
これ使って null バイト攻撃っていうのが可能なことが。
10001000:2006/05/12(金) 04:09:50

    /  ̄ ̄ ̄ ̄ ̄ ヽ
   / //ノノノ人ヽ   ヽ
  | /        \ヽ |
  || ''''''    '''''' :::::::ヽ /
  .|(●),   、(●) .::|-、
  |   ,,ノ(、_, )ヽ、,, .:::::|り|  ぬるぬるしている感じだった
  .|   トェ盆ェイ  ..::::::|- '
   \.  `ニニ´  .::::/
   ,ィ介ー‐--‐一イ|\
  /| | | |ヽヽ/,イ| | | | |ヽ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。