[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 01/17 15:29 / Filesize : 215 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語なら俺に聞け(入門篇) Part 54



1 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 20:41:54 ]
C言語の*入門者*向け解説スレッドです。
初心者、初級者の方は他の質問スレのほうが良いかもしれません。

教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 130代目
pc12.2ch.net/test/read.cgi/tech/1250204272/

・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
  # サイズが大きい場合は宿題スレのアップローダ等を利用してください
・開発環境や動作環境も晒すと答えが早いかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

前スレ
C言語なら俺に聞け(入門篇) Part 53
pc12.2ch.net/test/read.cgi/tech/1253110182/

過去スレ
makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000

734 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:47:33 ]
実験を一人でやれない奴は発明するな

735 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:52:50 ]
日本に航空機製造をさせない某国のような

736 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 16:17:07 ]
再発明と再開発・再生産とは違う。
発明するのが無駄ってことだろ。


737 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 16:19:56 ]
孔明の罠??


738 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 16:45:53 ]
やらない言い訳に使うなってことでもあるな。
ありもしないライブラリを再発明になるといけないので探してます、とかな。

739 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 17:24:10 ]
>>737
巧妙なトリック

740 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 17:39:11 ]
光明の罠

741 名前:デフォルトの名無しさん [2009/10/25(日) 18:13:11 ]
あなたに自分の好きなことをする自由な時間を取り戻す20の方法
gigazine.net/index.php?/news/comments/20080802_find_free_time/

10.「それは受けられません」と言うことを学びなさい
12.最も大きなタスクを一番最初に処理しなさい
13.人に任せる
14.気を散らすあらゆるものを視界から取り除きなさい
15.インターネットから切断する
16.外部委託する


742 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 18:50:31 ]
>>737
げぇ!



743 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 19:55:57 ]
1. その本を閉じる
2. 2chviewer をアンインストールする


744 名前:デフォルトの名無しさん [2009/10/26(月) 02:48:27 ]
方向キー押すと1づつ大きくなるカウンタってどうやって作りますか?
押している間じゃないです
お願いします

745 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 03:03:15 ]
処理系依存

746 名前:toya mailto:age [2009/10/26(月) 06:15:16 ]
>>726

準拠する規格は『JISX3010:2003 プログラム言語C』で
www.jisc.go.jp/ 」→「JIS検索」→
「JIS規格番号からJISを検索」で「X3010」と入力し
「一覧表示」→「JISX3010」→「規格の閲覧」で閲覧できます


747 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 06:27:28 ]
c99かよ

748 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 11:04:50 ]
int func(){
 for(;;){
 }
 return 0;
}

こういうスタイルって、紙の本で行数が間延びしないためのものだろ。
実機での記述でこのスタイルにしてる奴って、それを理解してないんじゃないのか?


749 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 11:14:43 ]
昔の画面全体で25行しか無い時も有効だったかもな。

750 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 11:18:30 ]
FDD全盛のころは改行コードすらもったいなかったんだよ

751 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 11:53:35 ]
>>748
ディスプレイで見たときにも間延びするとかっこわるい。

752 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:03:07 ]
詰まってる方がかっこわるいだろ



753 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:34:43 ]
int foo(int n, int m)
{
  int i, j, k, something;

  for ( i = 0; i < n; ++i )
    if ( i != m ) {
      (void)something;
      for ( j = 0; j < n; ++j )
        for ( k = 0; k < n; ++k ) {
          (void)something;
          if ( k != m )
            (void)something;
          {
            int a, b;
            (void)(something = a + b);
            (void)something;
          }
        }
    } else
      (void)something;
  (void)something;

  return 0;
}

関数化しろとかインデントが2カラムと言うのは無しで、こういうソースはできれば見たくない

754 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:36:40 ]
>>753
見なきゃいい
エディタ起動時に必ず整形ツールを通すようにすればいいだけだ

755 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:38:01 ]
この形に美しさを感じられない奴は
コンピュータプログラミングには向いていないよ。

756 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:43:13 ]
>>753
別に悪くないと思うが。
じゃあどんなスタイルが良いんだ?

定番で悪いが
Linux流プログラム書法
ttp://www.linux.or.jp/JF/JFdocs/kernel-docs-2.2/CodingStyle.html

757 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:51:07 ]
プログラムの途中でコアを吐く?のだけど、そんなエラー見たことないし、
調べても何か特定の原因があるってわけでもなさそうなのでさっぱり意味がわかりません。
一つ一つの処理ごとにprintfを挟んでみたところ以下のようでした。

#define _XOPEN_SOURCE

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

main(void)
{
int i, j, len;
unsigned char tripkey[11] = "";
unsigned char salt[3] = "";
unsigned char trip_f[256] = "";
unsigned char trip[11] = "";

printf("トリップキーを入力:");
scanf("%u", &tripkey);

printf("トリップキー入力"); ←これが表示されずにコアを吐く

758 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:54:03 ]
>>757
> scanf("%u", &tripkey);

scanfの使い方調べろよ

759 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:54:36 ]
>>753
Java見たいで嫌だ書き直す
int foo(int n, int m){
  int i, j, k, something;

  for(i = 0; i < n; ++i){
    if(i != m){
      (void)something;
      for(j = 0; j < n; ++j){
        for(k = 0; k < n; ++k){
          (void)something;
          if(k != m) (void)something;
          {
            int a, b;
            (void)(something = a + b);
            (void)something;
          }
        }
      }
    }else (void)something;
  }
  (void)something;
  return 0;
}
漏れが許せる隙はこれが限界だ

760 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:54:48 ]
制御にくっつく単文でもブレースで括ってくれと言いたかったんだ
ブレースだけの行があるのが嫌な人もいるんだろうけどね
もう慣れているからどちらでもいいんだけど、修正時のエンバグ対策に{}付けていた体質を改めようかな、はっはっはぁ

761 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:00:43 ]
>>753
インデントついてるからまだましだけど
その書き方でインデントめちゃくちゃなやつもいた

if(k != m) (void)something; {
  int a, b;
  (void)(something = a + b);
  (void)something;
  }

とかもう

762 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:10:11 ]
関数は

int
foo(int n, int m)
{
}

って書く方が好みだ。
関数名を検索するときに、/^foo\(/でジャンプできるからな。
'{'を独立した行に置くのは、K&R第1版の頃の
foo(n, m)
 int n;
 int m;
{
}
からの慣れかな。



763 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:13:37 ]
>>753
他人が読むことを想定していないコードだな

764 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:14:21 ]
>>763
具体的にどこがそうなのか挙げてみれ

765 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:16:07 ]
スタイル議論してるスレがあるはず。

766 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:16:56 ]
関数は

/*!
 * @brief fuga
 *
 * hoge
 *
 * @return piyo
 */
int
foo(
    int n, /*!< [in] bar */
    int m /*!< [in] baz */
) {
}

って書く方が好みだ。
ただの似非Doxygenスタイルだけど。

767 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:17:47 ]
>>764
わかってるくせに

768 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:18:59 ]
>>759
Java みたいなのはお前の方だw

769 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:20:59 ]
int foo(int n, int m){
int i, j, k, something;

for(i=0; i<n; ++i){
if(i != m){
(void)something;
for(j = 0; j < n; ++j){
for(k = 0; k < n; ++k){
(void)something;
if(k != m)
(void)something;{
int a, b;
(void)(something = a + b);
(void)something;
}
}
}
}
else
(void)something;
}
(void)something;
return 0;
}


770 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:23:52 ]
>>767
>>753は、非難されるほどひどいスタイルには見えん。
ひどい点があるなら、教えてくれないか

771 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:26:58 ]
>>770
全角スペース

772 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:28:11 ]
スタイルじゃなくて、これが紛らわしいってこと

if ( k != m )
(void)something;
{
int a, b;
(void)(something = a + b);
(void)something;
}




773 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:29:38 ]
if ( k != m ){
  (void)something;
}
{
  int a, b;

  (void)(something = a + b);
  (void)something;
}

774 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:31:01 ]
#define BEGIN do{
#define END }while(0)

if ( k != m ){
  (void)something;
}
BEGIN
  int a, b;

  (void)(something = a + b);
  (void)something;
END;

775 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:32:17 ]
>>771
htmlでインデントを表現するために、わざと全角空白をつかってるんじゃないか?

776 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:36:39 ]
>>775
 
使え

受け取った方がコピペでコンパイル出来るようになる

777 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:54:13 ]
>>775
&nbsp;
使え

消えてたorz

778 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:02:01 ]
&amp;を忘れたのねw

779 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:10:58 ]
>>776
一部の専ブラでは書き込まれた&nbspをコピペすると化ける。


780 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:12:27 ]
>>758
なんだかよくわからなかったのでgetsを使ってみたけれどそれでもダメでした

781 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:13:57 ]
なんだかよくわからないものをなんだかよくわからないまま使っても
なんだかよくわからない結果にしかならないと思うんだ

782 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:23:26 ]
>>780
scanfのフォーマット指定子とそれに対応する引数を考えてみて。
つかあまりにも適当に指定してるようにしか見えないから、
正解をズバリ書くのもはばかられるわ



783 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:47:18 ]
>>782
%sと%cを試してみたけど変わりませんでした


784 名前:どちらが正統? mailto:sage [2009/10/26(月) 14:58:45 ]
char s[6]="INTEL";
sは長さ6の文字列へのポインタで、その値は変更不能な文字列
(リテラル)"INTEL"を指すポインタ値

なのか

sは長さ3の文字列へのポインタで、その値は変更可能な文字配列
を指すポインタ値で、変更可能な文字列配列はあらかじめ
コンパイラによって変更不能な文字列"INTEL"を複製したもの
が設定されている。

785 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 15:03:19 ]
>>783
へぇ

786 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 15:19:05 ]
>>784
どちらも間違い。 sはポインタではなく配列

787 名前:どちらが正統? mailto:sage [2009/10/26(月) 16:20:53 ]
char s[7]="foobar";

sは長さ7の変更不能な文字配列である"foobar"の名前である

のか

sは長さ7の変更可能な文字配列で(コンパイラにより)
変更不能な文字配列(リテラル)"foobar"の複写で初期化された
ものの名前である。

788 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:29:32 ]
PHPをかなりやってきて、
プログラミングの基本とか
だいたい理解したと思うので
そろそろCをはじめようかと
思うのですが、Cをはじめる
前に、これを先にPHPで勉強
しておいたほうがいい、
っていうの、何かありますか?

一応、PHPで、

print文で画面に文字とかを出力、表示する

ifでの分岐
switch文での分岐

for、while、foreachでのループ

ユーザー定義関数
関数への値渡し、引数渡し

includeで他のファイルを読み込んで使う

配列、連想配列(ハッシュ)

ファイルへの読み書き

OOP基礎
----------------------------------------------
↑こんくらいはマスターしました。
Cに移行する前に、何かもっと
勉強しておいたほうがいい知識はありますか?

789 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:30:35 ]
別に真っ白な状態からCを学んでも良いと思うけど。

790 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:34:11 ]
>>788
PHP→Cは結構苦労するってなんかの本に書いてあったな
逆にC→PHPは3日で覚えられるって事も

791 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:37:48 ]
PHPで、

セッションやら、
クッキーやら、
サニタイズやら、
BASIC認証やら、

やらされたので、Cだと
そういうのないので、
かえって勉強しやすいかなー
と思ってます。

792 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:40:33 ]
>>787
後者。
でも「変更不能な文字配列(リテラル)"foobar"の複写で」がなんか違和感あり。

char s[6] = "INTEL";
は、
char s[6] = {'I', 'N', 'T', 'E', 'L', 0};
と全く同じよ。



793 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:51:19 ]
リテラルの複写とは全く違うから後者も間違いだろw

794 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 16:54:29 ]
>>783
引数もちゃんと考えようぜ。
例を見て&つけてるんだろうけど、何で&がついてるかわかるか?
配列の[]無しはどういうものかも。

795 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 17:06:55 ]
>>791
C-CGI作るならもちろんその辺もやらないとだめだよ

796 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 17:09:37 ]
CでCGIなんか作るわけねーだろ。あほか?
USBで外部デバイスを接続して
パソコンでプログラム組んで
ROMライターで焼いて、、、
ってやるんだよ。

お掃除ロボットのルンバの
プログラム組んだりとか
ロボット作ったりとかしてーんだよ。

空気よめよwww

797 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 17:44:30 ]
Cのコンパイラーは
どっからダウンロードするんにゃ〜〜

おしえれ〜〜

798 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 17:45:57 ]
2chのread.cgiはcだそうだ

799 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 17:55:47 ]
>798
どっかのFlashで見たなそういえば、
zlibとか使って圧縮して通信容量減らして危機を救ったとかなんとか

十分慎重に組めばセキュアなCGIも作れるわけだが
CでCGI作るというウェブサイトや書籍にろくなものが無い気がしないでもない

800 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 18:05:38 ]
文字解析以外はCもperlのようなものも一緒でしょ
というか、2chのC化自体はあまり効果が無かったような

801 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 18:10:22 ]
2chブラウザのおかげね。

802 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 18:59:07 ]
今はむしろ2chブラウザのせいで通信量が増えてるわけだが



803 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 19:26:03 ]
どうして?

804 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 19:39:48 ]
>>803
タブをたくさん開きーのそいつらをいっせいにリロードしーの
あまつさえ自動でリロードしーの

805 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 19:44:08 ]
多くの専ブラはそれの対応したはずだが

806 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 19:57:13 ]
対応といっても更新間隔に制限を設けただけだからな
100タブ単位で開いてると馬鹿にならない

807 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:20:00 ]
それって専ブラの起因した問題じゃないと思うが

808 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:24:17 ]
というか量増えちゃだめなの?PCの能力あがったんだからたくさんの情報をロードできるから仕方ないじゃん。


809 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:25:09 ]
人間の能力はあがってないだろ

810 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:27:51 ]
読もうとしてないスレもリロードしたりするじゃん。
なのにそのスレ読むときにまたリロードしたりして。
専ブラに起因した問題じゃないってのはタブ型ブラウザのことでも指してるのかなぁ

811 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:29:46 ]
あれはリロードじゃなくてDATの量を見てるだけだし読むときは差分だけだし
なにか勘違いしてない?

812 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:31:23 ]
ttp://f30.aaa.livedoor.jp/~kokodake/unix.html
昔話



813 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:31:28 ]
なら転送量は増えないの?

814 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:40:01 ]
いま仕様みてきたけど、次回dat読み込むときは
HTTPリクエストヘッダに
Range: bytes=

で差分を指定できるみたいだね。(この場合は gzip 圧縮はされない)

ただ、リクエストしまくるとバーボン規制やボボン規制を食らう可能性もある。

815 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 20:40:24 ]
説明するのは面倒なので ttp://monazilla.org/ の資料でも読んでください

816 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 21:42:38 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10020.txt

実行して出力したときに、
countを1000にするとうまく表示されるのですが、
countを100にしたときに、どうして壁を突き破るのか教えてください。
また、100にしても壁を突き破らない方法を教えてください。



817 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:01:03 ]
>>792
char s[]="書き換えてはならない文字列";
s[2]='¥0';

この場合コンパイルは通る?動作は保証される?

818 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:13:19 ]
>>817
大丈夫
保証される

819 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:39:18 ]
>>817
解釈ルール上からは大丈夫な筈であるが
char *s="書き換え禁止文字列";
とかと混同使用されている現実から安全対策の為、
強く警告を出して事実上禁止している処理系が
多いのでやらないほうが良い。

820 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 22:45:52 ]
>>819
そんなのがあるとは…
ちなみに処理系の名前を教えて欲しいです

821 名前:デフォルトの名無しさん [2009/10/26(月) 22:57:47 ]
>>819
混同してるのも安全対策が必要なのもてめーだけだ
何を禁止or警告されているかくらい読めぼけ

822 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:06:02 ]
VC++2008で見てみたけど、警告レベル最高でもべつに警告はでなかった。



823 名前:デフォルトの名無しさん [2009/10/26(月) 23:10:19 ]
>>822
>>817 の時点ではおkだが、>>819 が痛いんだよ

824 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:16:37 ]
リテラルに関しては特別である件について

int array[]={0,1,2,3,4,5,};
の要素がLValueになれない処理系はモグリだが
char array[]="012345";
の要素がLvalueになれない処理系がモグリだと
決めつけられないとオモ
char array[6]="012345";
でLValue禁止はモグリだが

825 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:18:10 ]
>>824
そういう処理系がある可能性もあるから
名前が知りたいだけですよ

826 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:20:33 ]
GCCやらVCみたいなメジャーなやつで警告でないなら、べつに気にしない。

827 名前:デフォルトの名無しさん [2009/10/26(月) 23:20:49 ]
>>824
> 決めつけられないとオモ
何が「特別」なのかどう頑張っても足掻いても完璧にわかってないな

828 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:32:44 ]
char s[]="12345"
がconst char s[6]={'1','2','3','4','5',0}と
等価だって保証されてる?

829 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:35:06 ]
>>828
constはつかないんじゃないの?

830 名前:解説 mailto:sage [2009/10/26(月) 23:49:59 ]
>>824とか
リテラル表現を見つけるとCコンパイラは機械的にそれを
void *型のconst ポインタ値に置換するというウワサ
(void*)の(char*)のキャスト省略は認容されているからprintfとかに
与えても文法上合法だし、その処理系に付属しているライブラリ関数
ならば期待した動作をする。

問題はvoid*が指しているアドレスに実際に何が書かれているかに
ついての規定が不可能になってきていること。
エンコーディング(フォントの種類とかサイズランク
(微妙に書体が変わるんで)まで規定できる新しいコード体系とか)
によっては連続したメモリ領域にマップしないほうが良い場合もあり
得るし実際しないだろうし。
そいった状況になったらchar s[]="うんたらかんたら";
がchar s[]={ 文字配列要素定義列 };
という解釈をしてもらえるという保証が無くなる可能性がある

831 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:52:37 ]
Cの規格上ではつかないよ。

char s[]="12345"; は左辺のために新たに確保された領域に
右辺の値がコピーされるから、つける必要もないし。

832 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:56:35 ]
>>830
そういうヘボい実装をしている処理系を知っているなら教えて欲しい
○○向け○○コンパイラとか



833 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:57:07 ]
あ、ちなみに処理系よってはANSIやJIS規格に従わないコンパイラなんていくらでもある。
だから、>>819>>824はその処理系の名前を具体的にあげてくれればいい。
それだけで話は終了する。これは一般論じゃないから。

834 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 23:59:02 ]
特定の文字エンコーディングに依存する実装のほうがヘボい
だろ。Cの現状的には






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<215KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef