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


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

【初心者歓迎】C/C++室 Ver.39【環境依存OK】



1 名前:デフォルトの名無しさん [2007/06/25(月) 12:01:46 ]
エスケープシーケンスやWin32APIなどの環境依存な物でもOK。
ただしその場合、質問者は必ず、環境を書きましょう。
※sage禁止です(と代々スレに書いてありますが自己判断で)。
【前スレ】
【初心者歓迎】C/C++室 Ver.38【環境依存OK】
pc11.2ch.net/test/read.cgi/tech/1180877635/
【アップローダー】(質問が長い時はココ使うと便利)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

653 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:27:39 ]
printf("あ");

654 名前:デフォルトの名無しさん mailto:s [2007/07/08(日) 19:27:52 ]
Visual C++ 2008 になったら tr1 とかも実装されるのかな。
C99 互換モードとかもつくのかな。

655 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:28:17 ]
>>651
コンパイラ次第

656 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:31:01 ]
>>653
書いた後でそう言われそうだと思ったけど、
そういう意味じゃなくて、
int hoge='a';
putchar(hoge);
こういう感じで'あ'を扱うにはどうしたら良いでしょうか?

657 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:36:28 ]
a と あ って全然違うだろ。1バイトと2バイトだし

658 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:37:19 ]
UTF-8 なら3バイト。

659 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:39:29 ]
>>656
char hoge="あ";
putchar(hoge);

660 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:39:44 ]
>>659
コンパイルエラー

661 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:40:43 ]
wint_t hoge='あ';
putwchar(hoge);



662 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:40:44 ]
>>659
それなら、
char hoge[]="あ";

にしないとまずいだろ。

663 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:43:25 ]
あまりにもひどい流れだ

664 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:48:08 ]
>>660
自分もそうやるのかと思ったんですが、
それだと何も表示されないです。(VC++2005で)


665 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:56:05 ]
ぬるぽ

666 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:56:43 ]
666

667 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:02:53 ]
ロケール?

668 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:06:59 ]
あはなぁ・・・・

669 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:16:32 ]
文字型を文字列で初期化できるわけねーだろ

670 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:22:14 ]
>>652
↓で良いが、例えばVC++8.0(VS2005)ではバグによって何も表示されない。
wchar_tやロケールまわりをまともに使える処理系か確認するこった。

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
int main(void)
{
    setlocale(LC_CTYPE, "");
    putwchar(L'あ');
    return 0;
}

671 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 20:29:35 ]
wchar_t を使う事は根本的な解決になってるんだろうか。



672 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:06:30 ]
>>652
#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main(void)
{
setlocale(LC_ALL, "");
putwchar(L'あ');
return 0;
}
Visual C++ 2005だとこれだけではバグってだめみたいだけど。


673 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:23:41 ]
>>670,>>672
ありがとうございます。
ちょっとbcc入れるのに手こずってました。
bccだと無事に動くっぽいですが、VCではダメなんですね。
しかしこれって単純に出来るものかと思ってたら、
意外と上手いこといかないものなんですね><

674 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:25:33 ]
>>673
VC++でも以前のバージョンなら問題なく動くんだがな

675 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:39:11 ]
Visual Studio 2005買うか迷う
早く2007か2008発売してくれたらいいんだけどな…

676 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 21:41:47 ]
今買うのはいかにも時期が悪いだろう
バグ持ちだしな(SPでも直ってねぇし)

677 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:26:22 ]
おれはEclipse派

678 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:50:56 ]
あれだけ難しいと思ってた「C言語ポインタ完全制覇」が今なんとなく読んだら
全部スラスラと理解できてワロタ
昔買った本読み返すとあぁ俺ちゃんと成長してると実感できてうれしいなw

679 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:52:44 ]
ちょうどあるから読んでみよっと

680 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 22:55:05 ]
Modernはいまだに7割くらいしか理解できん…


681 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 23:54:54 ]
>675
2008は4Q(多分12月ごろ)。MSDNにすれば?



682 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:30:28 ]
すみませんが質問です。
ある関数のバイナリを表示するプログラムを作ったのですが思ったとおりに表示されません。
source:
#include <stdio.h>

int func(void)//この関数のバイナリを表示したい。
{
  return 0x12345678;
}

void fend(void){}//func関数の終わりをこの関数のアドレスから求める。

int main(void)
{
  char *p;
  char i;
  p = (char *)func;//func関数のアドレスをchar型のポインタへ代入。
  for(i=1; p<(char *)fend; i++) {
    printf("%2.2X ", *p++);//func関数のバイナリを1バイトごとに表示。
    if(!(i%16)) putchar('\n');//とりあえず16バイトごとに改行。
  }

  return 0;
}
result:
55 FFFFFF8B FFFFFFEC FFFFFFB8 78 56 34 12 5D FFFFFFC3

55 8B EC B8 78 56 34 12 5D C3と表示されるのを期待していたのですがうまくいきません。
コンパイラはBorlandコンパイラです。
根本的な間違いの指摘、もしくは強引な方法でうまく表示させる方法を教えてください。

683 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:34:30 ]
>>682
そこまでできてるんなら char を unsigned char にすればいけそうな気はするね。
でも、移植性のあるコードじゃないことは理解しておけよ。

684 名前:682 mailto:sage [2007/07/09(月) 01:36:30 ]
>>683


685 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:37:00 ]
pの型を char → unsigned char

686 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:38:46 ]
ついでに、%2.2Xは%Xで大丈夫な希ガス

687 名前:682 mailto:sage [2007/07/09(月) 01:39:53 ]
ミスりました。
>>683
ありがとうございます。
解決できました。
移植性のないコードであることは百も承知でございます。
cl.exeでコンパイルするとうまくC3のret命令で終わらなかったです。
ただ、アセンブリの勉強のために作ったので自らの環境で動けば問題なしです。
ご丁寧にどうもありがとうございました。



688 名前:デフォルトの名無しさん [2007/07/09(月) 01:45:28 ]
1byte文字、2byte文字が混ざった文字列から、
1文字ずつ読み込んで、これが1byteか2byteか判定するにはどうしたら良いでしょうか?

お願いします。

689 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:48:08 ]
txtから数字を読み込んでバブルソートするプログラムを組みたいのですが
(数字は一行ずつ記述された状態)
出来ればそのあとさらにtxtに出力したいです
fgetsに関する記述方法がいまいち理解できないです
この後にどのような記述をすればいいのでしょうか

#include<stdio.h>
#include<stdlib.h>
#define swap(type,x,y) do{type t=x;x=y;y=t;}while(0)
int bubble(int a[],int n)
{
int i,j;
for(i=0;i<n-1;i++){
for(j=n-1;j>i;j--){
if(a[j-1]>a[j]){
swap(int,a[j-1],a[j]);
}
}
}
}
int main(void)
{
FILE *fp;
if((fp=fopen("data.txt","r"))==NULL){
printf("file open失敗\n");
exit(1);
}
while(fgets(

690 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:49:02 ]
gccだと型そのままでも %02hhX にすれば問題なく表示できるんだが
bccでも同じなのかどうかは知らない
まぁ、バイナリ扱うなら unsigned char にしとくほうが良いだろうけど


691 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 01:56:53 ]
>>689
フォーマットが固定ならfscanfで読み込んでfprintfで出力すれば良いだけだと思うけど

fgetsで読み込みたいなら読み込んだ奴をstrtolするかsscanfにかければいいし




692 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 02:08:14 ]
カレーが食べたいよ

693 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 04:08:03 ]
>>678
遅レスだけど、俺もスラスラ読めて、さらには
「JAVAだとどうだとか、ほっといたれや」
とまで思ったりして、はじめ読んだときは「なるほどな〜」と
思ってたのに、今じゃ文句までつけやがる俺。
どんどんひねくれていく自分に嫌気がさす。

694 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 07:03:58 ]
>>682
func と fend がメモリ上で連続する保証はあるの?

695 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 08:13:30 ]
>>694
ない。でも>>687

696 名前:デフォルトの名無しさん [2007/07/09(月) 14:14:04 ]
age

697 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 14:15:09 ]
sage

698 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 15:40:00 ]
おしえてください (VC++ 6.0 MFC)
エディットコントロールに複数行の文字列を表示させた時、
その時のスクロールの位置を一番下の行にしたいのですが、うまくいきません。
m_editMsg.SetWindowText( m_strLog );
m_editMsg.SetScrollPos( SB_VERT, m_editMsg.GetScrollLimit( SB_VERT ) );
この処理を行うと、スクロールバー自体は一番下の行に移動した様な表示になるのですが、
表示される文字列データは、先頭部分が表示されてしまいます。
どうしたらいいのか教えて下さい。お願いします。

699 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:24:14 ]
エディットは、キャレットの位置を動かせ
EM_SETSEL 使えばいいかな。

700 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:44:31 ]
>>687
関数間が NOP (90h) で埋められてるなら
NOP が出てくるまで・・・と出来そうな気はするけど、
コードの途中で境界合わせに NOP が出てこない保証もないし、
ダメかなあ・・・。

701 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:58:25 ]
>>700
定義順に関数アドレスが並ぶ保証はどこにもないよ



702 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 17:12:31 ]
>>699
ありがとうございます。調べてみます。


703 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 17:51:57 ]
>>701
?

704 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 18:17:06 ]
>>700
関数間がNOPで埋められる保証もどこにも無いよ。

705 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 19:37:39 ]
>>704
「関数間が NOP (90h) で埋められてるなら」
という条件付きで話してる事に、そう言われても・・・

706 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 19:42:30 ]
この手の板にはよくあること

707 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 19:43:36 ]
関数のアドレスが、ジャンプテーブルだったりするのも
よくある話。

708 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:06:18 ]
C++だけではGUIって作れない?
API勉強しないとだめ?

709 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:09:33 ]
>>708
「C++だけ」ってのが「標準C++ライブラリだけ」ってことならyesだな

710 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:19:22 ]
>>709
ありがとう。さすがにCUIばっかりで飽きてきちゃったからAPI勉強してみる(`・ω・´)

711 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:34:28 ]
>>709
否定形の問いかけに対して安易にyesと答えてはいけないw



712 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 20:56:37 ]
>>705
VC2005だとそうなっては無かったから、
結構多くのコンパイラでその仮定は間違っているんじゃ無いの? と思っただけ。
どっちにしても>>700はあんまり意味無さそうだね。

713 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 21:24:20 ]
>>707
vc8のインラインアセンブラだと
 × call printf
 ○ call dword ptr [printf]
 ○ call test_func
 ○ call dword ptr [test_func]
(test_funcは同じオブジェクト内の自作関数)
じゃないとうまく動かなかった。
不思議なような、そうでもないような。うーん。

714 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 21:32:18 ]
call printfがだめなのは、ランタイムDLLを使っているからという可能性は無い?

715 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 21:40:08 ]
>>714
That's right !  そのとおりだった!

ってか、前にMTでテストしたはずだったんだけどな・・・orz

716 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 23:51:37 ]
関数最後のサブルーチンコールはジャンプで実装する最適化もあるぞ。

717 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 00:19:18 ]
>>712
昔の VC6 くらいそうなってなかったかなあ。

718 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 09:55:26 ]
2005もDebugとReleaseで違うしな

719 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 21:51:23 ]
質問です。

基本的にMFCのDoc-Viewを用いたプログラムです。自分で生成した特定の
ウィンドウのスナップショットを、画像に保存したいのですが、どのようなアプローチで
進めたらいいのか悩んでいます。

1. 非アクティブまたは非表示な場合でも、フレームを含めたウィンドウ全体を
画像として取得するような手段はあるのでしょうか?

2. 1.が不可能なら、非アクティブまたは非表示で、ウィンドウの内容(例えばCViewの
中身)のみを取得する手段はあるのでしょうか?

XP VC2005 SP1

720 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:07:13 ]
fgets(str,N-1,stdin);
printf("%d",(int)strlen(str));

↑な感じのコードを書いて実行させると、
【実行画面】
>hoge
5

となるのですが、これってどうなっているのでしょうか?

721 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:12:05 ]
hogeの後に改行文字がくっついてて、それも数えられてるから



722 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:14:58 ]
あぁ、改行文字を読み込んでたのか!
ヌル文字は入れないはずなのになんでかと思ったら…。
>>721サンクスです!

723 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:00:52 ]
>>718
2005だとRelease,Debugとも基本的にNOPは使ってないよ。

724 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:24:29 ]
char str[10]="piyo";

これでstrが指す場所を"yo"にしたいのですが、
どうすれば良いでしょうか?


725 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:25:23 ]
>>724
strcpy(str, "yo");

726 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:28:13 ]
>>725
char *str2 = &str[2];

727 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:31:52 ]
>>725
文字列をコピーしたいってより、yoの場所まで移動させたいのです。
array[i++]=strtol(str,&err,0);
これを繰り返し行う際にstrをstrから任意のバイト分進めた値にして
文字列を完全に走査、数値格納したいのです。

728 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:39:50 ]
そのstrは配列だからそもそも指すとかそういう表現はしない
&str[2]とかstr+2好きなように表記すればよか
これが気持ち悪いなら別途charへのポインタ用意して
char *p=str;
とした後に読み進めたいバイト分だけp+=2みたいにインクリメントすればいい

729 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:41:26 ]
char* p = &str[2];
でいいんじゃね

730 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:44:48 ]
str[i]2

731 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:46:04 ]
>>727
strtol の使い方が知りたかっただけなんだね

#include<stdio.h>
#include<stdlib.h>

int main(void){
long value[100];
char str[]="100 200 300 400 500 x 600 777";
char *ptr=str, *endptr;
int i, value_num=0;

for(value_num=0;value_num<100;value_num++){
value[value_num]=strtol(ptr, &endptr, 10);
if(ptr==endptr) break;
ptr=endptr;
}

for(i=0;i<value_num;i++){
printf("%ld\n", value[i]);
}

return 0;
}



732 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 23:47:28 ]
>>726,>>728-729
なるほど、ありがとうございます。
それを参考にちょっと今から思った通り出きるか作ってみます。

733 名前:732 mailto:sage [2007/07/11(水) 00:34:56 ]
で、出来た…。
>>731さんのものを参考に、一行にある複数数字(途中非数字あり)
を格納して表示するプログラムを作ってみました。
これってあと直すところとかどうでしょうか?

>12 32 aaa43jfie55 32
たとえば入力が上のようなら、
12,32,43,55,32が配列に格納されて表示される仕様です。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 256
int main(void){
long value[N];
char str[N];
char *ptr=str, *endptr;
int i, value_num=0,l;
fgets(str,N,stdin);
l=strlen(str)-1;
for(i=0;i<l;i++){
if(strtol(ptr, &endptr, 10)!=0)
value[value_num++]=strtol(ptr,&endptr,10);
ptr=++endptr;
}
for(i=0;i<value_num;i++){
printf("%ld\n", value[i]);
}

return 0;
}

734 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 00:37:08 ]
#define N 256

735 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 00:37:13 ]
あれ、>>732>>731さんへのアンカを入れ忘れてました…。
申し訳ない、>>731さんも激しくありがとうございます。

736 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 01:01:54 ]
どなたかC++に詳しい方、教えてください。今日、はまりました。
以下ClassAに、オーバロードしたfunc()という関数が2つがあるとします。
ClassAを継承したClassBをnewし、classb->func(NUM_2);をコールすると、期待通りに
ClassA::func(NUM)がコールされるのですが、(1)だけオーバライドしたClassCを
newし、classc->func(NUM_2);をコールするとClassC::func(int, NUM)がコールされて
しまいます。
期待した動作はClassA::func(NUM)がコールされる事でした。
これはC++の仕様なのでしょうか。コンパイラがどういう論理でenumを使用した関数の
オーバライド/オーバロードを解決しているのかご存知の方、ご教示お願いします。

enum NUM { NUM_1, NUM_2, NUM_3 };
class ClassA {
virtual int func(int a, NUM b = NUM_1); // ←(1)
virtual int func(NUM a = NUM_1); // ←(2)
};
class ClassB : public ClassA
{
// ClassAの(1),(2)はオーバライドしていないクラス
};
class ClassC : public ClassA
{
// ClassAの(1)だけをオーバライド
int func(int a, NUM b = NUM_1);
};

737 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 01:03:17 ]
www.fides.dti.ne.jp/~oka-t/cpplab-hide-overload.html

738 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 01:06:12 ]
呼び出し側のコードはどうなってんの

739 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 01:12:08 ]
NUMばっか出てきてとか見づれーんだよ。もっと考えて書けよドカスが
>classc->func(NUM_2);をコールするとClassC::func(int, NUM)
理由は>>737
ClassCでfunc(int,NUM)を宣言しちゃったから、ClassAのfunc(int,NUM)が見えなくなってる。
あとvirtualな関数にデフォルトパラメータつけるな

740 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 01:58:14 ]
>>737
>>738
>>739
見づらくてすいません。
C++にそんな仕様があるとは知りませんでした。
ありがとうございました。

参考までに
>あとvirtualな関数にデフォルトパラメータつけるな
は何故でしょうか?

741 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 02:10:29 ]
デフォルトパラメータは静的な型に依存する

class B{
virtual void foo(int a=300){std::cout << a;}
}
class D{
void foo(int a=100){std::cout << a;}
}

B* pb = new D();
pb->foo(); //300と表示される

D* pd = new D();
pd->(foo); //100と表示される

だった筈



742 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 02:11:50 ]
>>741
> pd->(foo);
モチツケ

743 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 02:24:20 ]
>>741
なるほど。納得しました。
ありがとうございます。


744 名前:デフォルトの名無しさん [2007/07/11(水) 10:08:49 ]
>>188
PHPアプリとCアプリとログ出力先を共通化という
無茶な事を要求されているときも
行単位の一発書き込みなら大丈夫かな?

2プロセス立ち上げてそれぞれ適当に書き込みをさせて
100万回くらいテストしたんだけど これで混ざんなかったから
多分大丈夫だよね?

745 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 10:52:14 ]
>>744
「行単位の一発書き込み」がシステムコールレベルでそうなっているなら大丈夫。
具体的には、(直接的または間接的に)O_APPENDでopen()されており、write()
一発で1行を書き込んでいるなら大丈夫。
それから少しでもズレるならダメ。

Win32の場合、O_APPENDに相当する機能がCreateFile()に存在しないので、
*必ず*排他が必須になるようだ。

746 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 14:55:19 ]
質問失礼します。
シャノンの符号化法による符号語生成プログラムと、
表計算ソフトを用いた符号語生成の違いについて説明して頂けないでしょうか?
よろしくお願いします。

747 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 16:23:30 ]
>>746
表計算ソフトを用いた符号語生成って、何のことか教えて。

748 名前:デフォルトの名無しさん mailto:sage [2007/07/11(水) 21:59:26 ]
>>743
ちなみに741の問題を回避するためにもNVIパターンが使えるぞ。

749 名前:デフォルトの名無しさん [2007/07/12(木) 08:23:23 ]
すみません
string型でファイル名を持っているとき、それをオープンしようとすると
エラーが出ます。char型にするにはどうすれば良いですか?

750 名前:749 [2007/07/12(木) 08:26:48 ]
自己解決しました

751 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 08:26:59 ]
つc_str()




752 名前:デフォルトの名無しさん [2007/07/12(木) 08:27:49 ]
ありがとうございました

753 名前:デフォルトの名無しさん [2007/07/12(木) 08:51:04 ]
ファイルを読み込むとき、終端で必要以上のサイズを
読み込むと配列が最後まで埋まってしまいます
どうすれば実データのみ読めますか??

fp.read(str,N); とすると strのサイズはNになります

754 名前:デフォルトの名無しさん mailto:sage [2007/07/12(木) 08:58:00 ]
何使って読み込んでるの? fp の型は?


755 名前:デフォルトの名無しさん [2007/07/12(木) 09:04:02 ]
fstream fp ("filename", ios::in | ios::binary );

なんですけど、fp.read(str,N); の戻り値は、istream 型です

どうすればサイズがわかりますか??


756 名前:755 [2007/07/12(木) 09:24:03 ]
自己解決しました

fp.gcount();で読み込みサイズが出ました






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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