C言語なら俺に聞け! Part 99
■ このスレッドは過去ログ倉庫に格納されています
0001v(^o^i)d
NGNG質問する前には最低限検索を。
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
各種リンク、関連スレは>>2-13あたり
C言語なら俺に聞け! Part 98
http://pc5.2ch.net/test/read.cgi/tech/1104114259/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0685デフォルトの名無しさん
05/01/20 21:12:370686デフォルトの名無しさん
05/01/20 21:13:41>>680によると 評価する==読み書きする って言ってるわけですよね。
結局どっちが正しいんですか?
0687デフォルトの名無しさん
05/01/20 21:16:42マニュアル見て自分で判断
0688デフォルトの名無しさん
05/01/20 21:20:49りんご
0689デフォルトの名無しさん
05/01/20 21:23:16わからないんで教えてください
0690デフォルトの名無しさん
05/01/20 21:25:430691デフォルトの名無しさん
05/01/20 21:26:20NULL ってコンパイラの中では *(void 0)で定義されてるんだっけ?
0692デフォルトの名無しさん
05/01/20 21:27:17http://www1.cts.ne.jp/~clab/hsample/File/File01/File01.html
0693628
05/01/20 21:31:34そういうこと言い出した時点で実装の話になっちゃうんだっての。
0694デフォルトの名無しさん
05/01/20 21:33:32>>680
0696デフォルトの名無しさん
05/01/20 21:37:32文法の評価と式の評価の混同。最適化されると無視されるかも知れない。完全にコンパイラとプリプロセサの状態に依存する。
「遊んでないで仕事しろ!」
0698デフォルトの名無しさん
05/01/20 21:40:230699デフォルトの名無しさん
05/01/20 21:45:31なんかよくわからないです。コンパイラとプリプロセッサってことは実装に依存するってことですか?
0700デフォルトの名無しさん
05/01/20 21:49:08何が?
0701デフォルトの名無しさん
05/01/20 21:50:510702デフォルトの名無しさん
05/01/20 21:53:45よくわからないんでやっぱり取り消してください。わからないなりに考えると
>>607は、アクセスが起こるかどうかはやってみないとわからないけど、評価はされるってことですか?
0703デフォルトの名無しさん
05/01/20 21:55:32何が評価?
0704デフォルトの名無しさん
05/01/20 21:56:340705デフォルトの名無しさん
05/01/20 22:00:19その部分の値か?それとも式か?
0706デフォルトの名無しさん
05/01/20 22:03:43ひょっとして勘違いしてますかね?
0707デフォルトの名無しさん
05/01/20 22:07:21その式に副作用はあるのか
0708デフォルトの名無しさん
05/01/20 22:10:190709デフォルトの名無しさん
05/01/20 22:16:27ということは、1は式としてみなされてるってことですよね。
ということは、 1; ってのは、 a=1; とかと同じように式とされるってことですか?
0710デフォルトの名無しさん
05/01/20 22:19:59いまどきC言語なんかできても自慢になりません。
プログラマ?(ププ…って時代だしw
俺はSE。おまいらから見れば超上級職だろうなw
0711デフォルトの名無しさん
05/01/20 22:42:56式ってとこはあってるが、動詞の有無は違う
0712デフォルトの名無しさん
05/01/20 22:44:16あなたは、その実態が「単価が高くて使いにくいプログラマ」だったりするSEなんですね?(Y/y)
0713デフォルトの名無しさん
05/01/20 22:46:00× 使いにくい
○ 機能しない
0714デフォルトの名無しさん
05/01/20 22:47:48お前が超上級職であるSEだという証拠を見せろ。
0715デフォルトの名無しさん
05/01/20 22:48:360716デフォルトの名無しさん
05/01/20 22:50:440717デフォルトの名無しさん
05/01/20 22:52:430718デフォルトの名無しさん
05/01/20 22:53:01void* p;
} NullPointerException;
C99でもこんな構造体ないの?
0719デフォルトの名無しさん
05/01/20 22:58:15ないガッ?
0720デフォルトの名無しさん
05/01/20 22:59:16while (1,0); ならOK。
0721デフォルトの名無しさん
05/01/20 23:03:03雑用係はマ板へ。
0722デフォルトの名無しさん
05/01/20 23:10:460723デフォルトの名無しさん
05/01/20 23:19:070724デフォルトの名無しさん
05/01/20 23:21:48勝ち組のつもりでこの世界に入るアフォは痛杉
しょせんベンチャー
鉄くず泥棒どもは開き直ってなんぼだよ
0725デフォルトの名無しさん
05/01/20 23:23:07>>607はまず実行結果をここに貼り付けてみろ
オマエの画面はどうなってる?
0726デフォルトの名無しさん
05/01/20 23:25:42実力のある奴はみんな米国だよ
0727デフォルトの名無しさん
05/01/20 23:29:030728デフォルトの名無しさん
05/01/20 23:30:240729デフォルトの名無しさん
05/01/20 23:38:31ママのおっぱいでもしゃぶってろ
0730デフォルトの名無しさん
05/01/20 23:40:21ママのおっぱいしゃぶりながら言わないでくれ
0731デフォルトの名無しさん
05/01/20 23:41:430732デフォルトの名無しさん
05/01/20 23:50:22if (strlen(cycleno) > sizeof(cycleno)) {
printf("strlen(cycleno) %d\n",strlen(cycleno));
printf("sizeof(cycleno) %d\n",sizeof(cycleno));
printf("cycleno %s\n",cycleno);
}
/********* 出力 *********/
strlen(cycleno) 16
sizeof(cycleno) 10
cycleno 1234567890慎
質問です。
上記の様に、strlen()で末尾にNULL文字の無い文字列を調べた時
訳分からん値が返ってくる件についてなんすが
これってNULL文字が検出されるまで
メモリ内の無関係な隣りの領域まで読み込んでるって解釈でよいのですか
また、%s出力に関しても同義ですか
あと、上記の解釈で正しいとすれば、仮にNULL文字がたまたまずっと
検出されなかったとすると、永久に読み込みが走るのですか
0733デフォルトの名無しさん
05/01/20 23:51:41その前にアクセス違反で落ちる
0734デフォルトの名無しさん
05/01/20 23:54:23会社のHP-UXと自宅のRedHatは落ちなかったとですよ
0735デフォルトの名無しさん
05/01/20 23:55:18...
0736デフォルトの名無しさん
05/01/20 23:57:37そんなに疑問なら、
cycleno[0]
cycleno[1]
cycleno[2]
...
cycleno[9]
cycleno[10]
...
cycleno[14]
cycleno[15]
cycleno[16]
を出力してみればいいだろうに。
頭悪いなあ。
0737デフォルトの名無しさん
05/01/21 00:03:43どうなった?
0738732
05/01/21 00:08:11printf(" %c, ",cycleno[i]);
}
/******* 実行結果 **********/
1, 2, 3, 4, 5, 6, 7, 8, 9, 0, , B, F, , , ,
>>736-737
やってみた。
ら、なおさらわかんなくなりました。
間にちらほらNULL文字っぽいの入っとる。
0739デフォルトの名無しさん
05/01/21 00:12:08%2x にしてみれ
0740デフォルトの名無しさん
05/01/21 00:21:02どうなった?
0741732
05/01/21 00:22:50printf("%2x, ",cycleno[i]);
}
31, 32, 33, 34, 35, 36, 37, 38, 39, 30, 1, 42, 46, ffffff83, 4, 8, 0,
>>739-740
NULL文字かと思ったら別の制御文字だったです。
やっぱ隣りの無関係領域の'\0'出るまで読み込みでビンゴだったようです。
どうもありがとうです。
つまり
終端がNULL文字でない文字列にstrlenや%sをかけるのは不正アクセスを
引き起こすので普通やっちゃいけない、
・・・って結論でよいですかね ´∀`
0742デフォルトの名無しさん
05/01/21 00:25:180743デフォルトの名無しさん
05/01/21 00:25:34OK
0744デフォルトの名無しさん
05/01/21 00:26:39時間かかってんだよ
0745デフォルトの名無しさん
05/01/21 00:29:210746デフォルトの名無しさん
05/01/21 00:36:52ぼけ %c でやって見えるわけねーだろ! ぼけ
%02 が常識 > ぼけ
さっさと> printf("%02x,",cycleno[i] & 0xff); しろ
0747デフォルトの名無しさん
05/01/21 00:37:36> 終端がNULL文字でない文字列にstrlenや%sをかけるのは不正アクセスを
> 引き起こすので普通やっちゃいけない、
strlenして、何を得たいわけ?
0748デフォルトの名無しさん
05/01/21 00:45:59今まで気づかなかったおまえが一番ボケ
0749デフォルトの名無しさん
05/01/21 00:52:27http://pc5.2ch.net/test/read.cgi/tech/1090227743/550
http://pc5.2ch.net/test/read.cgi/tech/1090227743/558
よろしくです。
0750デフォルトの名無しさん
05/01/21 02:01:05{
日下部先生
}
0751デフォルトの名無しさん
05/01/21 08:07:430752デフォルトの名無しさん
05/01/21 08:40:21何とか表示する方法はないでしょうか?
0753デフォルトの名無しさん
05/01/21 08:54:32sscanf(buf,"%%%02x",&c)
0754デフォルトの名無しさん
05/01/21 08:56:450755デフォルトの名無しさん
05/01/21 08:57:550756デフォルトの名無しさん
05/01/21 09:13:51int main(){
char string[] = "日本語?";
int i = 0;
while (string[i]!='\0') printf("%%%02X", 0xff & string[i++]);
return 0;
}
0757デフォルトの名無しさん
05/01/21 15:21:31どうやるんですか?教えてください
0758デフォルトの名無しさん
05/01/21 15:23:530759デフォルトの名無しさん
05/01/21 15:42:580760デフォルトの名無しさん
05/01/21 15:47:32環境依存。標準関数ではない。
0761759
05/01/21 15:53:52そうですか・・・・。
例えばWindowsならどんな関数がありますか?
0762デフォルトの名無しさん
05/01/21 15:55:16Windowsは知らん。ググれば解かると思うが。
0763759
05/01/21 15:55:44分かりました。
0764デフォルトの名無しさん
05/01/21 15:58:50タイピングもどきを作ってるんですけど、ファイルから
ランダムに一行ぬいて、キーボードでうちこんで、strcmpで正誤判定
ってのを作ってて、ファイルを上から読んでいく事はできたんですけど
rand()って0〜指定した数字までをランダムに指定するってものですよね?
これをどう用いればファイルからの抜き出しができるんですか?
初心者なものでお願いします
0765デフォルトの名無しさん
05/01/21 16:02:38一般的に、stat()は割りと環境を問わずあると思う。
また、読めることを以って存在すると仮定していいのなら、fopen()してみればいい。
0766デフォルトの名無しさん
05/01/21 16:05:18一旦、メモリに読み込むのが常套手段かと。
0768デフォルトの名無しさん
05/01/21 16:08:00char** str;
str=(char**)malloc(〜…
行番号=(int)((double)行数*((double)rand()/RAND_MAX));
printf("%s",str[行番号]);//なんなりと
0769デフォルトの名無しさん
05/01/21 16:17:280770デフォルトの名無しさん
05/01/21 16:25:22の括弧の中へvoidをなぜ書かなきゃならんとでつか?
0771デフォルトの名無しさん
05/01/21 16:28:25main(void)は引数がないことを意味し、
main()だと引数は不定だということを意味する。
ちなみにC++だと共に前者の意味になる。
0772デフォルトの名無しさん
05/01/21 16:29:120773デフォルトの名無しさん
05/01/21 16:32:49サンクスコ。
voidを明記しないと不貞の浮気者になるんでつね。
0774デフォルトの名無しさん
05/01/21 16:57:29プロトタイプ宣言で
void function(void)
と宣言していても、下のほうでvoidを記述しなくてもいいんでつか?
void funtion()
{
printf("ほにゃらら");
}
こんな感じで。
0775デフォルトの名無しさん
05/01/21 17:17:28OK。2つは合成される。
ところでmain関数の戻り値はintが正しい。
0776デフォルトの名無しさん
05/01/21 17:32:38そうでなくてはいけないわけでもないけれど、その方がいろんな面で有益。
0777デフォルトの名無しさん
05/01/21 17:39:18後はmainメソッドに書いてるように
method1.setMessage("ええんか");のように
括弧の中に具体的な値を好きなようにかけるんですよね?
0778デフォルトの名無しさん
05/01/21 17:39:48ありがとさん。
プロトタイプ宣言でvoidを書いておけば
下のほうで書かなくてもいいんでつね。
で775のmainの戻り値をintでってのはなぜでつか?
0779デフォルトの名無しさん
05/01/21 17:52:460780デフォルトの名無しさん
05/01/21 18:51:190781デフォルトの名無しさん
05/01/21 20:00:11それはシェル使わんし、Mainを終わることは電源切るときだけだから。
0782デフォルトの名無しさん
05/01/21 20:02:38馬鹿はすっこんでろ
0783デフォルトの名無しさん
05/01/21 20:09:20>>781
馬鹿はすっこんでろ
0784デフォルトの名無しさん
05/01/21 20:13:11■ このスレッドは過去ログ倉庫に格納されています