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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2007/06/25(月) 06:14:52 ]
C言語の入門者向け解説スレです。
・C++言語はスレ違いです。
・分からない事をなるべく詳しく書いて下さい。
・ソースコードを晒すと答えやすくなるかもしれません。
・質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。

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


教えて欲しいのではなく丸投げしたいならこちらへ
C/C++の宿題を片付けます 91代目
pc11.2ch.net/test/read.cgi/tech/1182607405/

684 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:30:50 ]
int i, j, k, n;
for(i=n-1; i> 0; i--) {
   for(j=i-1; j>=0; j--) {
      if(a[j]==a[i]) {
         for(k=j; k<n-1; k++) a[k] = a[k+1];
         n--;
         i--;
      }
   }
}
こんな感じで同じものを消去すりゃいいんじゃね?

685 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:31:14 ]
ソートしてからの方が効率いいだろ・・・

686 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:34:55 ]
>>685
ソートしちゃうとどれが先にでてきたか分からなくならない?
いや、マージソートとかならいいけど

687 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:38:45 ]
>>686
そのための安定ソートだろ
入門篇ならバブルソートだろう

688 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:44:16 ]
>>685
ソートは3番目の要素でするんだぞ?

689 名前:678 mailto:age [2007/07/04(水) 22:45:58 ]
>>683
それ考えたんですけど、
実際は0000000000番から9999999999番まで(10桁)あり、
番号も全部あるわけじゃないからやっぱり効率悪いですよね。
はやさも求められているんで・・・

ハッシュとか2分探索とか使うんですかね?

690 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:50:51 ]
>688
一番目の要素で安定ソート
一番目の要素でのかぶりを削除
三番目の要素でソート
ってことだろ。

691 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 22:53:29 ]
インデックス情報を付加しといて qsort という手もある。

692 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:05:49 ]
標準ライブラリに無いのが難点だけど
重複してるかどうか調べるのはハッシュ使うのがいいと思う



693 名前:デフォルトの名無しさん mailto:sage [2007/07/04(水) 23:08:01 ]
インデックス用の配列mallocしてqsortが一番楽だろ

694 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 09:38:27 ]
>>672
それどっかの入門書に載ってたぞ

695 名前:デフォルトの名無しさん [2007/07/05(木) 15:50:14 ]
CからつかえるフリーのXMLライブラリないですか?

696 名前:デフォルトの名無しさん [2007/07/05(木) 15:53:13 ]
何方か標準関数のプログラムの作り方教えてください

697 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:54:07 ]
日本語でもう一度

698 名前:デフォルトの名無しさん [2007/07/05(木) 15:55:33 ]
>>672見たらmain内で関数宣言してるけど、これはなに?
そういう手法があるの?関数の内容よりそっちに目がいった。
こんなことしたことないけど、どうなの?

699 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 15:58:24 ]
そりゃキミが知らないだけだろ

700 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 16:06:00 ]
プロトタイプ宣言くらい関数内でできる。

701 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 16:41:17 ]
次のような関数を作りました。
Vertices isMaxNoVer(Vertices R[]){
  Vertices max;
  int i, count=0;

  max.num = 0;
  max.deg = 0;
  max.no = 0;

  count = countVer(R);

  for(i=0; i<count-1; i++){
    if(max.no < R[i].no){
      max = R[i];
    }
  }

  return max;
}


この関数を、次の再帰関数を使って二度目に呼び出した時、
動作がおかしくなり、以下のようなおかしな値が入ります。
test expand 1, 8 -1073747304 134516287
更にその後2度目のtest expand 3に入る前に
セグメントエラーを起こして止まってしまいます。
これだけの情報でわかって頂けるかわかりませんが、
誰か助けてください。

702 名前:701 mailto:sage [2007/07/05(木) 16:42:43 ]
void expand(Vertices R[]){
  Vertices p, buf[N], Rp[N];

  while(countVer(R) != 0){
    p = isMaxNoVer(R);

    printf("test expand 1, %d %d %d\n", p.num, p.deg, p.no);
 
    if((countVer(Q) + p.no) > countVer(Qmax)){
      syokikaVer(buf);
      mataha(Q, p);
      printf("test expand 2\n");
      syokikaVer(buf);
      ganma(buf, p.no, G);
      printf("test expand 3\n");
      syokikaVer(Rp);
      katu(Rp, buf, R);
      printf("test expand 4\n");



703 名前:701 mailto:sage [2007/07/05(木) 16:44:38 ]
      if(countVer(Rp) != 0){
numberSort(Rp);
expand(Rp);
      }
      else if(countVer(Q) > countVer(Qmax)){
copyVer(Qmax, Q);
      }
      hiku(p, Q);
    }
    else return;
    hiku(p, R);
  }
  return;
}

QやQmax、Gはグローバル変数です。

704 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:03:30 ]
>>701
それだけだと分からんなぁ〜
katu(Rp, buf, R);
numberSort(Rp);
このへんの関数に問題ありそうだけど

705 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:29:52 ]
質問です。
今、以下のような関数と構造体を作ったのですが、

typedef struct
{
    int Length, Maximam, ValueSize;
    void* Array;
} ArrayList;

char* GetValue(ArrayList* list, int index)
{
    char* data = (char*)list->Array, item = malloc(list->ValueSize);
    int i = 0;
    unsigned int p = index * list->ValueSize;
    if(list->Length > index && item != NULL) {
        for(; i < list->ValueSize; i++) {
            item[i] = data[p + i];
        }
        return item;
    } else {
        return NULL;
    }
}

以下続く

706 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:33:11 ]
item

707 名前:705 mailto:sage [2007/07/05(木) 18:33:11 ]
void AddRange(ArrayList* list, const void* values, int length)
{
    char* data = (char*)list->Array, item = (char*)values;
    unsigned int i = 0, itemlength = length * list->Maximam, index = list->Length * list->ValueSize;
    if(list->Length + length >= list->Maximam) {
        list->Maximam += length * 2;
        list->Array = realloc(list->Array, list->ValueSize * list->Maximam);
    } for(; i < itemlength; i++) { data[index + i] = item[i]; }
    list->Length += length;
}

void main (void)
{
    ArrayList list = { 0, 4, sizeof(int), malloc(sizeof(int) * 4) };
    int i = 0;
    int s[10] = { 0, 1, 2, 3, 4, 5, 6 ,7 ,8 ,9 };
    AddRange(&list, s, 10); AddRange(&list, s, 10);
    for(; i < list.Length; i++) { printf("%d\n", *((int*)GetValue(&list, i))); }
}

どうしてもGetValueのchar* itemの領域が確保できないんです。
他にも、listのArrayをいじってもヒープが壊れてますとか言われるのですが…
なにかやってはいけないことでもやってしまっているのでしょうか?
行数圧縮しているため読みにくいとは思いますが、よろしくお願いします。

708 名前:705 mailto:sage [2007/07/05(木) 18:34:36 ]
ちなみに、元のソースではすべて

int i = 0;
int j = 0;

のように宣言しています。

709 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:38:04 ]
itemはchar型変数として宣言されてる
*itemで宣言しなきゃダメだろ

710 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 18:41:16 ]
>>709
元ソースでは
char*になってたんですが…
削りすぎた orz

711 名前:705 mailto:sage [2007/07/05(木) 19:07:04 ]
いろいろ試してみたのですが、
AddRange(&list, s, 10);を
連続でなくとも2回使用するとGetValueのitemの中がNULLに、
3回目からはAddRange(&list, s, 10);で行われるreallocで
ヒープが壊れているというエラーが出てくるようです。

何が悪いんだろ orz

712 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:09:20 ]
AddRangeの2回目でヒープ壊してる
itemlengthとreallocのサイズが乖離してる



713 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:17:30 ]
つーかGetValue()って範囲チェック除けば
char *GetValue(ArrayList list, int index)
{
return (char*)list.Array + index * list.ValueSize;
}
これで十分じゃね?

714 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:24:04 ]
itemlength = length * list->Maximam → itemlength = length * list->ValueSize
でいけるかな?


715 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:29:48 ]
>>712
itemlength = length * list->Maximam
のMaximamが原因でした。ValueSizeにするはずだったのに…
1回の使用だけだとエラーが出なかったので問題ないと思い込んで
気づかなかった orz

>>713
そんなやり方もあったんですか…
void*だとサイズわかんねぇよって怒られるのでchar*にして
コピーする方法しか知りませんでした。

>>714
全くその通りです。
まともにコードかけるようになるのは時間がかかりそうだ orz

ありがとうございました!

716 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 19:34:00 ]
素直に型を限定すればいいのに

717 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 21:55:47 ]
int型の数字を文字列に変換するのってどうやるん?
具体的に言うと
int n = 34;
char* nStr = intToStr( n ); /* nStr = "34" */
という風にしたいのだけれど。

718 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:03:14 ]
char *buf;
int n=34;
buf=メモリ確保
ssprintf(buf,"%d",n);

719 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:05:12 ]
>>717
sが一個多かった
sprintf


720 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:35:49 ]
>>718
サンキュ!
inline char* int2str( int n )
{
char *buffer;
buffer = malloc( sizeof( char ) );
sprintf( buffer, "%d", n );
return buffer != NULL ?
buffer:
"FAULT!!";
}
一応こういう感じで。

721 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:43:17 ]
>>720
>buffer = malloc( sizeof( char ) );
1バイトしか確保できないよ
'\0'しか格納できない
もう少し多めに確保して
>return buffer != NULL ? buffer:"FAULT!!";
buffer の確保が失敗した場合 sprintf( buffer, "%d", n ); でエラーが出る
buffer = malloc( sizeof( char ) );
if(buffer){
sprintf( buffer, "%d", n );
return buffer;
}
else {
return "FAULT!!";
}
のほうがいい気がする

722 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 22:57:49 ]
>>721
せっかくならmallocも直してやれよw
11桁くらい確保すれば十分の気がする



723 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:16:28 ]
>>720
んじゃ buffer = malloc(sizeof( char ) *12);
または buffer = malloc(12);

>>722
符号付の場合、'\0'いれると12文字になる

724 名前:デフォルトの名無しさん [2007/07/05(木) 23:40:25 ]

最強の関数教えてください


725 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:42:07 ]
VIPでやれ

726 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:42:25 ]
どう考えても main だろ。

727 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:43:51 ]
>>724
abort

728 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 23:49:33 ]
exit

729 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:35:39 ]
buffer = (char*)malloc(sizeof( char ) *12);
        ↑これは?

730 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:36:56 ]
bufferの型にあわせてあるんだろ。
C++じゃ必須の書き方だがCじゃいらん。

731 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:47:14 ]
CとかC++の問題じゃねーだろ・・・知ったかの初心者がレスしてんのか、ここは?
キャスト演算子とか知ってなさそうだな・・・平気で型の違う変数をキャスト演算子なしで
代入しちゃうようなヘボプログラマーかw

732 名前:デフォルトの名無しさん [2007/07/06(金) 01:48:12 ]
配列の添え字に変数を指定することは可能でしょうか?




733 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:54:01 ]
コンパイラが自動的にやってくれるのを当てにして失敗するプログラマー(プ

734 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 01:56:50 ]
>>730 (・∀・)ニヤニヤ
> bufferの型にあわせてあるんだろ。
> C++じゃ必須の書き方だがCじゃいらん。

735 名前:732 mailto:sage [2007/07/06(金) 01:57:25 ]
自己解決しました
可能っぽいですね

736 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:01:26 ]
>>730 (・∀・)y-~~~ ヤニヤニ

737 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:01:26 ]
C だと void* から別のポインタ型への変換は暗黙にできるだろ・・・常識的に考えて。

738 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:04:22 ]
void*が無かった頃のCならmallocはchar*を返したから
キャストしないと警告もんだとか言い出してみる。

739 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:04:47 ]
>>730 (・∀・)ニヤニヤ ヘボプログラマー必死だな

740 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:08:16 ]
>>738
malloc で気を使っても、
どっかで void* 使ってたらそれだけでアウツだけどな。
その環境なら。

741 名前:732 ◆L/nntMgEC6 [2007/07/06(金) 02:11:36 ]
>>735
可能なんですか?

742 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:12:01 ]
>>730 (・∀・)ニヤニヤ あるんだろ。Cじゃいらん。



743 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:24:21 ]
>>738 (・∀・)ニヤニヤ
> void*が無かった頃のCなら

744 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:27:29 ]
>>732
char a[10];
int i;

でa[i]ってことですか?
もちろん可能。

添え字は整数の値をとる式ならなんでもおkだぞ。

745 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:29:22 ]
>>744 (・∀・)ニヤニヤ
> 添え字は整数の値をとる式ならなんでもおkだぞ。

(VIPPERのAA略)<常識的に考えて配列の要素番号の範囲内だろ

746 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:33:49 ]
アホが常駐しとるな

747 名前:744 mailto:sage [2007/07/06(金) 02:34:12 ]
>>745
おまい!大丈夫か!
>>732は文法的に許されるかと質問しているんだろ!

748 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:34:50 ]
よい子がC言語の勉強実況してるからみてやろうぜ
WMPのファイル→URLを開く→matoinu.orz.hm:30000をコピペ→OK

実況スレ
何でも実況V なんでも実況フリーダム
live24.2ch.net/test/read.cgi/livevenus/1183654888/

面白いぜwwwwww



749 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:38:25 ]
範囲外まで指定できちゃうのがエラーの温床になってるしな。

750 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:40:29 ]
とりあえず (・∀・)ニヤニヤ を NG にした。

751 名前:732 ◆L/nntMgEC6 [2007/07/06(金) 02:42:37 ]
>>744さん
回答有難う御座います。

int i;
char a[]="abc";
i=strlen(a);
char b[i];

のような感じで使いたいのですが、可能でしょうか?

752 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:44:57 ]
>>747 (・∀・)ニヤニヤ 適切と不適切がわからないプログラマーワロスw
キャストは不要でつか〜〜〜?



753 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:46:39 ]
746 名前:デフォルトの名無しさん 投稿日:2007/07/06(金) 02:33:49
アホが常駐しとるな

(VIPPERのAA略) < 常識的に考えて知ったかぶって初心者にありもしないことを言う方がおかしいだろ
どう考えて配列を適切に参照できる、要素番号の範囲内の値をとる式ならって話ならわかるけどw

754 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:48:03 ]
とりあえず (VIPPERのAA略) を NG にした

755 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:49:35 ]
>>744 (^∀^) ニタニタ
> 添え字は整数の値をとる式ならなんでもおkだぞ。
整数の値をとる式ならなんでも 整数の値をとる式ならなんでも
こやつは要素数と参照できる範囲外の値をとってもおkなんだぞぉーーー!

756 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:50:28 ]
>>744 m9(^д^)9m プププ、(ダブル)プギャー

757 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:53:33 ]
文体変えてAA使っても、いつものアホだってことはバレバレ

758 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:53:52 ]
>>754
all right, I will use AA that's not for short.

759 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:54:34 ]
>>757
> いつものアホ
アホとか言っちゃってるよぉ〜〜〜、お前がアホのくせして初心者に大嘘教えているくせにw
お前みたいな奴にアホ言われたくね〜〜なぁ。俺は間違ってねーし。お前は不適切。

760 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:56:01 ]
VIPPER の AA 略 < 常識的に考えて、文法的におkってことを持ち出して
不十分な(というか間違っている)説明の言い訳をするかぁ?
んじゃお前は a[10] の配列の10番目を参照するときは a[10] とでもやってろよ

761 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:56:21 ]
>>751
それはダメ。
配列変数の宣言文には変数は使えない。
それをするなら

nt i;
char a[]="abc";
char *b;
i=strlen(a);
b=(char*)malloc(sizeof(char)*i);

762 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 02:56:51 ]
>>751
int i;
char a[]="abc";
char *b;
i=strlen(a);
b = (char*)malloc(sizeof(char)*i);

free(b);

スレの流れからすればこんな感じ
bにaと同じ長さの文字列を入れるなら+1しないと駄目だけど。



763 名前:732 ◆L/nntMgEC6 [2007/07/06(金) 02:58:25 ]
>>761さん
有難う御座います。おかげで疑問が解けました。

764 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:00:43 ]
 |    ( ●)(●)   いい加減な説明をしていることを指摘されて
. |     (__人__)   指摘した相手をアホとか言う方がアホだろ
  |     ` ⌒´ノ   常識的に考えて・・・

765 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:01:22 ]
>>761
C99ならできるというのは禁句かい?

766 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:03:23 ]
回答者が書く補足としては、ありだとおもう。
突っ込みとしては、ちょっと弱い。

767 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:04:15 ]
 / ノ  ⌒ \  文法的にも間違っていることを言う奴が
 |  (●)(●) |  間違っていない奴にアホって言うアホだろ
. |  (__人__)  | 常識的に考えて。ちゃんとキャストしろよ

768 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:05:15 ]
常考常考うるせーよ

貶し合ってないで意味のある話をしろ

769 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:08:42 ]
>>763
VBだとそれができるんだよね。

それはVBなどのインタープリター言語は実行時に変数宣言文も実行文もおなじように上から処理してゆくから。

Cのようなコンパイラ言語はコンパイル時に変数宣言文を処理してゆく。
だからコンパイル時に配列変数のサイズがわかっていないと処理ができない。

JavaもVBと同じだと思う。

770 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:09:22 ]
ここは初心者が鼻息を荒くして入門書読みながらレスしてるのが多くて注意が必要

771 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:09:45 ]
>>765
C99ならできるの?

772 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:10:54 ]
 |    ( ●)(●)   お前みたいな奴は、たとえドラマの役者として
. |     (__人__)   起用されても、まともなキャスティングもされずに
  |     ` ⌒´ノ   脇役かエキストラに決まってんじゃん>アホ言うたアホ



773 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:12:15 ]
AA厨も早く寝ろ
今日はお開きだ

774 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:15:42 ]
>>773 (・∀・)キャスキャス

775 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:17:05 ]
いまさらやらない夫のAA貼り付けて喜んでんのかよw

776 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:27:41 ]
>>771
余裕

777 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 03:27:46 ]
いまさら やらない か?っつか、いまさらキャストも適切に出来ない奴が
初心者相手にいい加減な説明、笑えねぇ〜〜〜〜〜。お前、指導者に向いてねーよ。

778 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 04:13:51 ]
キャストすると型によってアドレスが変わるプロセッサの話をすると、へんなのを召喚しちゃいますか?

779 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 04:41:39 ]
それがどうかしたのか?
printf に渡すときの話とはわけが違うぞ?

780 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 06:14:06 ]
1バイト文字と2バイト文字が混在してる文字列を
ループ使って1バイトずつputchar()で画面に表示しても
ちゃんとどちらも表示されるのは、シェルやプロンプトの方で
何バイト文字か確認して1バイト文字じゃない時は
一度バッファに溜める、とかしてるからですか?

781 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 06:21:01 ]
ものによるとしか

782 名前:780 mailto:sage [2007/07/06(金) 06:49:14 ]
>>781
例えばどうやって処理してるんですか?



783 名前:デフォルトの名無しさん mailto:sage [2007/07/06(金) 07:35:00 ]
>>780
いいえ、シェルプログラムはそんなことはしません。

784 名前:780 mailto:sage [2007/07/06(金) 07:52:43 ]
>>783
あ、コンパイラがやってくれてるんですか?






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

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

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