C言語なら俺に聞け(入門編)Part 60
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/01/31(日) 15:48:19★前スレ
C言語なら俺に聞け(入門編)Part 59
http://pc12.2ch.net/test/read.cgi/tech/1263014439/
★過去スレ
http://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
★初心者、初級者の方は他の質問スレのほうが良いかもしれません。
例えば
【初心者歓迎】C/C++室 Ver.70【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1258873470/
とか
★教えて欲しいのではなく宿題を丸投げしたいだけなら
↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 133代目
http://pc12.2ch.net/test/read.cgi/tech/1260532772/
★C++言語についてはなるべく聞かないでください。C++対応明記スレへどうぞ
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
# 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること
# サイズが大きい場合は宿題スレのアップローダ等を利用してください
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
0153デフォルトの名無しさん
2010/02/04(木) 16:03:200154デフォルトの名無しさん
2010/02/04(木) 16:14:42int main() {
int n = 7, i;
for (i = 0; i < sizeof n * 8; i++) {
printf("%d\n", !!(n & (1 << i)));
}
return 0;
}
0155デフォルトの名無しさん
2010/02/04(木) 16:35:11質問者は書いてみてくれないか
0156デフォルトの名無しさん
2010/02/04(木) 22:06:21入力待ちをはさんでenter一回押して
次いくようにするにはどうすればいいですかね?
0157デフォルトの名無しさん
2010/02/04(木) 22:09:200158デフォルトの名無しさん
2010/02/04(木) 22:14:17void wait(void){
wchar_t enter[1];
fgetws(enter, 1, stdin);
while(getwchar() != L'\n');
}
0159デフォルトの名無しさん
2010/02/04(木) 22:20:24'\n' より先に EOF がくると無限ループしない?
0160156
2010/02/04(木) 22:42:16char wait;
scanf("%c",&wait);
0161デフォルトの名無しさん
2010/02/04(木) 23:17:58int a=0;
〜 プログラム 〜
/* ここで、一旦0にリセットしたい。 */
〜 プログラム 〜
0162デフォルトの名無しさん
2010/02/04(木) 23:23:40代入ならできる
0163デフォルトの名無しさん
2010/02/04(木) 23:27:57単純なことを忘れてました。
0164デフォルトの名無しさん
2010/02/04(木) 23:31:05代入って代わりに入れるんですよね
どこに代わりに入れるんですか
0165デフォルトの名無しさん
2010/02/04(木) 23:56:15161の例でならaでしょ
0166158
2010/02/05(金) 00:35:30有り難う御座います
Ctrl+ZでEOFを入力したところ無限ループにはならなかったのですが
入力した文字にEOFが含まれていると、fgetwsがもう一度入力を求めるような挙動になりました
これはどういうことなんでしょうか
0167デフォルトの名無しさん
2010/02/05(金) 14:36:24メモリを
freadやfgetsとかする方法って無いですか?
0168デフォルトの名無しさん
2010/02/05(金) 14:43:050169デフォルトの名無しさん
2010/02/05(金) 14:44:05こいつは何がやりたいんだろう
0170デフォルトの名無しさん
2010/02/05(金) 14:50:550171デフォルトの名無しさん
2010/02/05(金) 14:58:18定形郵便
長さが14〜23.5cm、幅が9〜12cm、厚さが1cmまでのもの
重さが50gまでのもの
封書の長さ、幅、厚さ、及び重さを与えて、次の表から郵便料金を計算する。
定形外郵便
上記の条件をオーバーしているもの。
郵便料金
25gまで 定形80円 定形外130円
50gまで 定形90円 定形外130円
100gまで 定形外 190円
250gまで 定形外 270円
500gまで 定形外 390円
1kgまで 定形外 700円
2kgまで 定形外 950円
3kgまで 定形外 1150円
4kgまで 定形外 1350円
なお、次の条件を満たしていない場合は、第1種の郵便物の取り扱いとならないので、その旨の表示を行う。
長さが14cm以上60cm以下である。
幅が9cm以上である
長さ+幅+厚さが90cm以上である。
重さが4kg以下である。
つまりこの条件にひとつでも当てはまれば、(この郵便物は取り扱いできません。)と表示させれば大丈夫です。
0172デフォルトの名無しさん
2010/02/05(金) 14:59:41↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 133代目
http://pc12.2ch.net/test/read.cgi/tech/1260532772/
0173デフォルトの名無しさん
2010/02/05(金) 15:00:23宿題なら専門スレにどうぞ
0174デフォルトの名無しさん
2010/02/05(金) 15:01:250175デフォルトの名無しさん
2010/02/05(金) 15:02:07今までパッケージしていなかったファイルを
パッケージ化して一部取り出してメモリに格納して処理したい
一時ファイルを作らずにやりたい
で、ファイルでやっていた処理を
メモリ版として使いたい
なるべくソース書き換えたくない
freadならなんとかなるけど
fgets,fscanfとか書き換えるのめんどい
fopenをなんとかしたらなりそうな気がするけど無理か
0176175
2010/02/05(金) 15:02:57宿題スレで聞いた方がいい?
0177デフォルトの名無しさん
2010/02/05(金) 15:04:23趣味か?
まさか業務じゃあるまい。
0178デフォルトの名無しさん
2010/02/05(金) 15:06:480179デフォルトの名無しさん
2010/02/05(金) 15:11:56FILE *tmpfile(void);
で一時ファイルを作るのがいいと思う
実際にファイルが作られるかどうかは実装依存だけど
小さなものならメモリ上でうまくやってくれそうな気はする
0180デフォルトの名無しさん
2010/02/05(金) 15:15:040181デフォルトの名無しさん
2010/02/05(金) 15:16:28fscanf等、文字列系の処理がうまくいかない気がする
0182デフォルトの名無しさん
2010/02/05(金) 15:24:350183デフォルトの名無しさん
2010/02/05(金) 15:25:28C言語の質問です。 mallocなどで確保した任意のメモリ領域をFILE構造体、またはファイルディスクリプタとして扱う方法はないでしょうか? OSに依存した方法でもかまわな.. - 人力検索はてな
http://q.hatena.ne.jp/1212571670
0184デフォルトの名無しさん
2010/02/05(金) 15:28:510185デフォルトの名無しさん
2010/02/05(金) 15:30:26fopen_b( data , size , "rt" )
ってな感じに書き換えるだけで無いかなと
directXで言うD3DXCreateTextureFromFile、D3DXCreateTextureFromFileInMemoryみたいな
コード書き換えるか一時ファイル作ります
ありがとうございました
0186デフォルトの名無しさん
2010/02/05(金) 15:32:06うわああ
それです。
ありがとうございます
ありがとうございます
0187デフォルトの名無しさん
2010/02/05(金) 16:50:40うわああ
なんどもありがとうございますといってくれて
ありがとうございます
ありがとうございます
0188デフォルトの名無しさん
2010/02/05(金) 19:08:310189デフォルトの名無しさん
2010/02/05(金) 20:24:080190デフォルトの名無しさん
2010/02/05(金) 20:54:250191デフォルトの名無しさん
2010/02/05(金) 21:05:41{
}
と書くと、無限に動き続けるのはなぜですか?
0.1を1に直すと正常に動くので、小数のせいかなとも思ったのですが、
{}の中で、0.1刻みの計算をしたいのです。
0192デフォルトの名無しさん
2010/02/05(金) 21:09:380193デフォルトの名無しさん
2010/02/05(金) 21:13:11ちゃんと動くようになりました。
0194デフォルトの名無しさん
2010/02/05(金) 21:26:060195デフォルトの名無しさん
2010/02/05(金) 22:00:04誤差率 a %
のように表示させたいのですが、半角の%だと表示されません。
全角を使うしかないのでしょうか?
0196デフォルトの名無しさん
2010/02/05(金) 22:04:45%%
0197デフォルトの名無しさん
2010/02/05(金) 22:05:470198デフォルトの名無しさん
2010/02/05(金) 22:08:370199デフォルトの名無しさん
2010/02/06(土) 00:43:250200デフォルトの名無しさん
2010/02/06(土) 01:27:470201デフォルトの名無しさん
2010/02/06(土) 06:55:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10495.txt
コマンドプロンプトでは上手く表示されるのに、datファイルを開こうとすると
「Null文字を含むファイルです。Null文字は半角スペースへ変換しました。」
となり、文字化けしてしまいます。
文字化けを防ぐにはどうすればいいですか?
0202デフォルトの名無しさん
2010/02/06(土) 07:04:04じゃなくて、
“このプログラムを使用して作成したdatファイルをテキストエディタ(TeraPad)で開こうとすると”
だろ。
このプログラムが作成しているのはテキストファイルじゃなくてバイナリファイルだから当然だ。
0203うんこ
2010/02/06(土) 15:57:07コンパイラ:Borland C++ 5.5.1 for Win32
ttp://homepage2.nifty.com/jr-kun/hidemaru_qa/make_dll.html#intro
上記のサイトを参考に秀丸エディタで利用できる「hello world!」を表示するDLLを作る方法を勉強しています
hidemaru.cというファイルに以下の内容を書きました↓
#define HIDEMARU_MACRO_DLL __declspec(dllexport)
HIDEMARU_MACRO_DLL /* __declspec(dllexport) */
LPCSTR hello(void) /* LPCSTR は const char* の typedef */
{
return "hello world!";
}
コマンドラインから「bcc32 -WD -hello_world.dll hidemaru.c」と打ったのですがエラーになってdllが作成されません
エラー内容→bcc32 -WD -hello_world.dll hidemaru.c
どのように修正したらdllが作れるのかどなたかご教示お願いします
0204デフォルトの名無しさん
2010/02/06(土) 16:23:190205デフォルトの名無しさん
2010/02/06(土) 16:24:21http://kineko.dyndns.org/~touhou/up/source/up3665.zip
0206デフォルトの名無しさん
2010/02/06(土) 18:45:45#include <windows.h>
0207デフォルトの名無しさん
2010/02/06(土) 20:18:23{
char *str;
void *buf;
buf = (void*) malloc( size );
if ( buf == NULL ) {
str = strerror( errno );
fprintf( stderr, "malloc failed (%s): %s\n size: %d\n", name, str, size );
exit( EXIT_FAILURE );
}
return( buf );
}
のとこで
malloc failed (left): Not enough space
size: 7064
ってでたんだけど容量不足?
0208デフォルトの名無しさん
2010/02/06(土) 20:35:44おそらく容量不足なんだろうね
もしくはメモリ管理してる部分を破壊したか
0209203
2010/02/06(土) 20:44:44エラー貼り付け忘れましたすみませんでした。
大変分かりやすいソースコードをアップしてくださり頂きありがとうございました。
頂きましたソースコードを元に勉強してみます
0210デフォルトの名無しさん
2010/02/06(土) 21:50:40>C/C++ 言語の経験者にとっては、お馴染みの作業かもしれませんが
>Java から C# 言語に移行してきた人であれば、ポインタの威力を肌で感じることでしょう
voidのポインタを調べていたら、こんな記事を発見
これでは偉そうな事を言っているけど、Javaとか.netのobjectと同じなんですよね?
無理やりObjectクラスを作っているような気がする
0211デフォルトの名無しさん
2010/02/06(土) 21:56:50だけど、sizeが大きすぎるのが問題?小さすぎるのが問題??
0212デフォルトの名無しさん
2010/02/06(土) 22:37:212 それ以前にメモリアロケータが管理用に使用している領域を破壊した。
オレの勘では2
0213デフォルトの名無しさん
2010/02/06(土) 22:48:461だとfree()つかってれば開放してれば問題ない??
2は解決策ありますか?
0214デフォルトの名無しさん
2010/02/06(土) 22:52:060215デフォルトの名無しさん
2010/02/07(日) 02:22:5395とかNTの時代には結構あったけど
0216デフォルトの名無しさん
2010/02/07(日) 03:11:26Object型ってメモリ・マップドI/Oに利用出来るの?
0217デフォルトの名無しさん
2010/02/07(日) 03:27:08リアルタイム系OSの場合は規定時間以内に処理が出来なかった
場合はtime_outフラグを設定してエラー値を返すように
拡張されている標準関数も多いです。
mallocもその例外ではなく、指定時間以内にallocに成功しなかった
(システムがディスクスワップやI/Oで忙しい時とか)場合は
NULLが返ってくるでしょう。これは勿論メモりが不足している
という意味ではありません。暫く待ってからリトライして
くれという意味になります。
0218デフォルトの名無しさん
2010/02/07(日) 09:40:38質問スレッドであって知識をひけらかすスレッドじゃない。
元質問者のレベルを推測して発言しようね。
0219デフォルトの名無しさん
2010/02/07(日) 10:21:32標準ライブラリと同じ名前で動作が違う関数なんて使いにくそう。
0220デフォルトの名無しさん
2010/02/07(日) 11:22:03使う側から見れば便利だけど、カーネルの中のつくりは大変そうだ。
タイムアウトになったら、そこまでのカーネルの中の処理は全部
キャンセルなんでしょ?
ロックの粒度が荒くなって、ヘタするとこの仕様自体が処理遅延の
要因になりかねないな
0221デフォルトの名無しさん
2010/02/07(日) 11:32:24「じゃ諦めます」てなアプリがどれくらい含まれてるかも考慮する必要があるしね
0222デフォルトの名無しさん
2010/02/07(日) 11:45:05最悪実行時間が計れない
必要なページはあらかじめ全部読み込んでおかないと
0223デフォルトの名無しさん
2010/02/07(日) 12:14:45いまgccで試してみたら2GBで失敗した。ちなみにWinXPで物理メモリは3.25GB。
0224デフォルトの名無しさん
2010/02/07(日) 12:23:49最初の質問をrefer
0225デフォルトの名無しさん
2010/02/07(日) 12:31:410226デフォルトの名無しさん
2010/02/07(日) 14:02:29OS起動時に/3GBオプション設定してる?
0227デフォルトの名無しさん
2010/02/07(日) 14:12:23mallocで2GB以上割り当てようとしたらエラーになるだろ
0228デフォルトの名無しさん
2010/02/07(日) 14:28:15逆。プロセスのロジックは若干増える。
システムに協調的にしなければならない
から。システムコールする度にそれに
かかった時間もプロセスのどっかに書
かれて戻るからそれを見て処理手順
をプロセスレベルで変更できる。
0229デフォルトの名無しさん
2010/02/07(日) 18:10:16name[0]="山田" name[1]="鈴木" name[3]="佐々木"
のようにしたいのですが
初心者なので変な質問かもしれませんが、代案があれば教えていただきたいです。
0230デフォルトの名無しさん
2010/02/07(日) 18:13:06nameがcharの配列の配列であることを前提として、strcpy。
0231デフォルトの名無しさん
2010/02/07(日) 18:20:30初心者はC++STLが一番。
name[0]="山田";と出来るぞ
0232デフォルトの名無しさん
2010/02/07(日) 18:22:53char name[4][10]={"渡辺","佐藤","山田","井上"};
0233デフォルトの名無しさん
2010/02/07(日) 18:27:110234デフォルトの名無しさん
2010/02/07(日) 18:28:260235デフォルトの名無しさん
2010/02/07(日) 18:29:59char *name[]={"渡辺", "鈴木", "佐々木"};
でいいのでは
0236229
2010/02/07(日) 18:34:22こんなにすぐに回答していただいて、びっくりしました(^^)
0237デフォルトの名無しさん
2010/02/07(日) 19:43:19gcc -o b.exe daytimetcpcli.c でコンパイルすると下記のエラーが出てしまいます。
ソースは提供されているソースをコンパイルしたものですが、どのようにすれば
コンパイルが成功するのでしょうか?よろしくお願いいたします
In file included from daytimetcpcli.c:1:
unp.h:7:66: error: ../config.h: No such file or directory
unp.h:200:30: error: ../lib/addrinfo.h: No such file or directory
In file included from daytimetcpcli.c:1:
unp.h:214: error: redefinition of ‘struct timespec’
unp.h:294: error: conflicting types for ‘gai_strerror’
/usr/include/netdb.h:263: error: previous declaration of ‘gai_strerror’ was here
unp.h:298: error: conflicting types for ‘getnameinfo’
/usr/include/netdb.h:272: error: previous declaration of ‘getnameinfo’ was here
unp.h:302: error: conflicting types for ‘gethostname’
/usr/include/unistd.h:451: error: previous declaration of ‘gethostname’ was here
unp.h:318: error: conflicting types for ‘inet_ntop’
/usr/include/arpa/inet.h:99: error: previous declaration of ‘inet_ntop’ was here
0238デフォルトの名無しさん
2010/02/07(日) 19:51:04>ちゃんと書いてありますがな。ドキュメントはちゃんと読みましょう。
> % ./configure
> % cd lib
> % make
> % cd ../intro
> % make daytimetcpcli
>でうまくいきました。
0239デフォルトの名無しさん
2010/02/07(日) 21:08:26スタイルキャストが必要
とか言って、エラーが出てきてしまいます・・・。
この場合はどうしたら良いんでしょうか?
0240デフォルトの名無しさん
2010/02/07(日) 21:19:160241デフォルトの名無しさん
2010/02/07(日) 22:36:360242デフォルトの名無しさん
2010/02/07(日) 23:27:29同じ fpos_t値 は常に同じところを指すのでしょうか? おしえてください。
0243デフォルトの名無しさん
2010/02/07(日) 23:31:13すみません。その操作はいったいなにをしているのでしょうか?
0244デフォルトの名無しさん
2010/02/07(日) 23:42:350245デフォルトの名無しさん
2010/02/08(月) 01:17:10いいえ
0246デフォルトの名無しさん
2010/02/08(月) 07:26:05わかんないなら、あきらめれ
0247デフォルトの名無しさん
2010/02/08(月) 08:14:20ここみて、わかんないなら、ほんとうにあきらめれ
ttp://www7b.biglobe.ne.jp/~tsu/mac/unpv12e.html
0248デフォルトの名無しさん
2010/02/08(月) 12:41:530249デフォルトの名無しさん
2010/02/08(月) 13:44:43http://www.kumei.ne.jp/c_lang/sdk/sdk_10.htm
if(id == IDYES)
{
if(KillTimer(hWnd, ID_MYTIMER) == TRUE)
{
}
DestroyWindow(hWnd);
}
どちらか片方をコメントにすると閉じるのですが、なにがまずいんでしょか
0250デフォルトの名無しさん
2010/02/08(月) 14:25:050251249
2010/02/08(月) 14:35:350252デフォルトの名無しさん
2010/02/08(月) 14:38:58思うのだが、zero埋めってどうやればベストなのかな?
zeroのバッファを用意してwriteしまくる、だと遅いのかな。
truncate(2) の方がいい?
# いや head とか dd 使えばいいだろ、とか言わないで ><
■ このスレッドは過去ログ倉庫に格納されています