1 名前:デフォルトの名無しさん [2007/02/22(木) 08:16:03 ] このスレッドはC言語について、 他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 C使いが優しくコメントを返しますが、 お礼はC言語の布教と初心者の救済をお願いします。 くだすれC言語(初心者用) pc10.2ch.net/test/read.cgi/tech/1153542424/
2 名前:デフォルトの名無しさん [2007/02/22(木) 08:37:42 ] 2get
3 名前:デフォルトの名無しさん [2007/02/22(木) 10:10:06 ] 裏切派遣って知ってる? 元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて派遣やってるバカのことw 前の会社を裏切り、結局派遣先からも騙されてる。 そもそも信頼されてるなら直接契約するか正社員にするはずだが、派遣会社経由って舐められ杉 自分でも騙され裏切れられてることは薄々わかってるから派遣問題の話が出るとウッキー!って逆ギレw
4 名前:デフォルトの名無しさん [2007/02/22(木) 17:06:10 ] 保守
5 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 22:28:47 ] printfってなんですか?
6 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:54:40 ] 関数の名前です
7 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 00:57:26 ] 半分は優しさでできています。
8 名前:デフォルトの名無しさん mailto:sage [2007/02/23(金) 02:21:25 ] D.リッチーのやさしさが詰まってます。
9 名前:デフォルトの名無しさん [2007/02/24(土) 11:52:39 ] doubleが数値であるかないか、つまりNaNやinfではないかどうかはどのように判定すればよいのでしょうか?
10 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 11:54:40 ] fpclassify
11 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 14:45:18 ] >>9 Double.isNaN Double.isInfinity
12 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 14:49:56 ] >>11 スレタイ嫁。
13 名前:デフォルトの名無しさん [2007/02/24(土) 15:10:31 ] 最近思うのだが C言語のreturn文てあまり使わないんじゃないの?
14 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 15:12:34 ] ?????
15 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 15:15:35 ] 最近思うのだが>>13 は C言語の関数をひとつしか作らないんじゃないの?
16 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 15:21:47 ] このへんはC99? isnan,isinifnite
17 名前:デフォルトの名無しさん [2007/02/24(土) 15:22:14 ] 引き数をポインターにして戻せば良いかなと思うんだけど
18 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 15:31:32 ] >>16 isnanはC99要求だね。 isinifniteってのはないが、isinfがC99から fpclassifyもだけど
19 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 15:37:56 ] >>17 hoge( hage() ) みたいに、結果をそのまま他の関数に渡す場合は?
20 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 15:56:32 ] 関数なんて便利なものがなかった時代でもプログラマはなんとかやってたわけだからreturn使わなくてもなんとかなるだろ。
21 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 16:06:16 ] なんとかならないから関数の概念が発達したんだろうに。
22 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 16:46:57 ] time()みたいに引き数でも戻り値でも戻す奴もいるがな。
23 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 18:11:44 ] 関数を呼ぶときに必ず右辺値を要求されるのは鬱陶しくてかなわん。
24 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 18:20:07 ] >23 どゆこと?kwsk
25 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 18:33:39 ] 左辺値を要求されると即値が書けずに鬱陶しいという話なら分かるが、 右だとなんだろ。
26 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 19:47:41 ] >>25 たぶん、>>23 が右と左の区別もつかない馬鹿なんじゃないのか?
27 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 19:48:37 ] >>25 たぶん、>>23 が右と左の区別もつかない馬鹿なんじゃないのか?
28 名前:デフォルトの名無しさん [2007/02/24(土) 22:34:02 ] printf()系の関数ってどうやって、 複数の型で値渡ししてるの? int printf(const char *format, ...); ...っていうのが可変長引数っていうのまでは わかったんだけど・・・ 個人的予測では、void*で受けて、 *formatの内容で型キャストしてるのかなぁ・・・と。
29 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 22:37:47 ] va_stratとかでググれ。 どうやっているかはコンパイラ次第でどうにでもできるようマクロで隠されている。
30 名前:28 [2007/02/24(土) 22:44:04 ] >>29 そうすると、いろいろやり方があるって事ですか? 例えばでいいので教えてもらえませんか。
31 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 22:53:38 ] 可変長引数を受け取る方法は、 29の言うva_startなど<stdarg.h>にある一連のマクロを使うことになっている。 コンパイラは、可変長引数をどうやって実現していようと、 <stdarg.h>の内容を定められたとおりに実装しなければならない。 だから結局使う側は<stdarg.h>のマクロの使い方を知っていれば良く、 どうやって実現されているかということは知る必要など無い。 もちろん理解を深めるために知りたいとかそういう話は別だ。
32 名前:28 mailto:sage [2007/02/24(土) 23:03:42 ] >>31 >>29 さんはva_startの事を言っていたんですね。 stdarg.hを参照することにします。 有難うございました。
33 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 23:10:35 ] でもって、可変長だと、実際に引数がいくつ、またどんな型で渡されたかは、 C言語的には判断できないので、printfのように%指定で判断する(だから%指 定の数やデータ型と引数にズレがあるとおかしなことになる)約束にするか、 型情報とデータをペアで交互に渡し、最後の引数として特定の値(NULLとか)の ものを積むとか決めておく。
34 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 19:44:27 ] 質問失礼します。 Visual C++ 2005 Express Editionで、 C++のプログラムを作るには、 Visual C++ 2005 Express Edition Microsoft Platform SDK インストールした後はこれだけあればいいんでしょうか? Microsoft MSDN 2005 Express Edition Microsoft SQL Server 2005 Microsoft SQL Server Natibe Client Microsoft SQL Server VSS Writer Microsoft SQL Server セットアップ サポート ファイル これらは必要ありませんか? 削除してしまっても大丈夫でしょうか? PCを起動するたび、タスクマネージャを見ると sqlserve.exeというのが100MB近くもメモリを使っているようなのです。 HDもかなりの量を使っているので、削除できるものがあれば削除したいのですが。
35 名前:28 [2007/02/25(日) 21:44:12 ] >>28 です。 詰まったので、又質問させていただきます。 stdarg.h内にてva_startを参照したところ__builtin_va_startに対して マクロ定義されていたました。 __builtin_va_startとは、一体何者なのでしょうか・・・ 検索したのですが、解説しているページがなく困っています。 よろしくお願いいたします。
36 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 21:46:52 ] va_startマクロが何をラップしていようと知ったこっちゃない。 コンパイラの開発元にでも問い合わせとけ
37 名前:28 mailto:sage [2007/02/25(日) 21:50:29 ] >>36 そういうもんですか。 ふぅ。
38 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 22:57:30 ] >>34 どれも使わないなら削除してしまえ。 そもそもVC++のインストール時にインストールしないよう指定できる。 MSDNには関数リファレンスやコンパイラオプションなどの説明などが 入っているが、必要ならExpress付属のものよりも、 オンラインのものや別途ダウンロードのもののほうが良い。 www.microsoft.com/downloads/details.aspx?FamilyID=94596AF5-CC58-45AF-A14B-DF627A31E783&displaylang=ja
39 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 23:10:18 ] >>28 va_arg が何をやってるかを低レベルで理解したいってこと? 関数の引数はスタックに積まれるので 最初の引数のポインタを渡すことで それ以降の引数のアドレスを求めているだけ。 取り出すときは型情報を指定することでサイズがわかる。 stdarg.h 使わずに実装すると勉強になりますよ。
40 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 01:19:22 ] >>38 どうもありがとうございます。 これですっきりします。
41 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 01:35:15 ] >>35 おまいさんが使ってるのはgccかな? このまわりの実装は処理系によって全然違う。 ANSI C に準拠していない古い処理系だと va_start に 引数がなかったりするようなヤツもある。 >>39 が言ってるのは一般的な処理方法の一つに過ぎない。が、 自分が使ってる処理系/環境でのこのまわりの動作を 理解できてれば↓こんなアホなこともできる。 mx1.tiki.ne.jp/~wraith/tips0005.htm
42 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 05:00:15 ] 用例1は未だしも、用例2はカス以下だな。
43 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 20:33:44 ] >>42 >用例1は未だしも そう思った、お前もカス以下だな。
44 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 00:19:17 ] 後のWM_(NC)CREATEのCREATESTRUCTを見ると、 WindowsのCreateWindow(Ex)はおそらく用例2を使っている。 だからどうしたということだが。
45 名前:デフォルトの名無しさん [2007/02/27(火) 21:56:35 ] よくポインタでつまずく、ポインタが難しいといわれてるけど、 ポインタ以前で難しいところやつまずきやすい所はどこ?
46 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 21:59:37 ] 環境設定
47 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 23:06:48 ] パスを通すところだな 初心者がマニュアル読まず検索せず過去ログを読まずに 質問してくる
48 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 23:22:02 ] しかも質問にはエラーを貼らないとか省略するとか独自解釈するとか。
49 名前:デフォルトの名無しさん [2007/03/03(土) 13:14:32 ] Cの勉強を始めるに当たり、参考書を買おうと思ってるのですが、 どれがいいのか教えていただけないでしょうか?
50 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 13:27:10 ] >>49 つ ttp://www.7andy.jp/books/detail?accd=31444195
51 名前:デフォルトの名無しさん [2007/03/05(月) 09:50:01 ] 週明け早々お聞きしたいのですが 配列で、効率的にメモリ確保をしたいのですが、どうやればいいでしょうか。 具体的には ・・・・・・・・・・・・・・・ ・・・・・・・・・・・ ・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・v こういう座標群があったとして、それを配列に確保していきたいのです。 point[x][y]のように宣言して、左上から値がなかったら0 あったら1のように確保していくと 無い部分のメモリが無駄に取られてしまうので 座標がある部分だけ、確保したいのです。 図は二次元ですが、それを3次元でやりたくて、そこで詰まっています。 ご指南お願い致します
52 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 09:51:36 ] すいません、上げてしまって。 他のスレの方が聞けそうなので、こちらの質問は撤回させていただきます。 すみませんでした
53 名前:デフォルトの名無しさん [2007/03/13(火) 15:13:44 ] strcatを使用しないでchar型配列(str1とstr2)を連結したいのですが、 文字列str1の最後の'\0'に文字列str2の0からを一つずつ代入していけばいいのは 分かるのですが、やり方がわかりません。 どうすればできますか?
54 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 15:20:16 ] int main(void) char str1[10] = "STR1", str2[] = "STR2"; char *p = str1, *q = str2; while(*++p); while(*p++ = *q++); puts(str1); }
55 名前:デフォルトの名無しさん [2007/03/13(火) 15:31:17 ] >>54 さん ありがとうございます。 まだポインタのほうを勉強していないのでまだよく分からないのですが、 参考にしてみます。
56 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 15:56:35 ] 配列の知識のみで書くと、 int i = 0; int j = 0; while (str1[i] != '¥0') { i++; } whle (str2[j] != '¥0') { str1[i] = str2[j]; i++; j++; } str2[j] = '¥0';
57 名前:デフォルトの名無しさん [2007/03/13(火) 16:09:31 ] >>56 さん 親切にありがとうございます。 ちゃんとできました。
58 名前:デフォルトの名無しさん [2007/03/15(木) 01:08:44 ] 数値の桁数を得るのによい方法はないでしょうか? たとえば、 int val = 7743; とある場合、valは4桁というように。ただ、printf系は使わずに行いたいです。 10で割っていけばできるような気がするんですが、イマイチわかりません。
59 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:11:02 ] 桁数 = 1 + log10(N) 高校数学の知識だろ。
60 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:13:34 ] 中学生かも知れないじゃん。 int val = 7743; int keta = 0; int temp = val; for (; temp > 0; keta++, temp /= 10); ただし val > 0 のときのみ
61 名前:58 [2007/03/15(木) 01:18:03 ] >>59-60 ありがとうございます。
62 名前:デフォルトの名無しさん [2007/03/16(金) 22:14:48 ] while(*p++ = *q++); どうしてこれで文字列がコピーできるんですか。
63 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 22:20:36 ] 最後の¥0を含めて文字をコピーしてはポインタが進み、 ¥0を代入したところで式全体の値が¥0つまり整数としては0になり、 偽と見なされるのでループが終了する。
64 名前:62 mailto:sage [2007/03/16(金) 22:39:36 ] 早速ありがとうございます。 もうちょっと教えてください。 カッコの中の「左++」「代入」「右++」では、必ず真ん中の「代入」から走るってことでいいですか? 左右の++が同期取れてないとずれちゃうんじゃないの、 ていうのが一番疑問なところなのです。
65 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 22:43:09 ] ++が後置されているときは、まず現在値を以降の式で 使うものとして控えてから1を加える。 前置なら1加えるのが先。
66 名前:62=64 mailto:sage [2007/03/16(金) 22:52:40 ] >>65 納得しました。ありがとうございます。
67 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 04:32:41 ] >62って書き換えると do {  *p = *q;  p++;  q++; }while(*p); ってことなんだよね。 初めて見たとき while(*p) {  *p = *q;  p++;  q++; } かと思ってなんで'\0'がコピーされるのかしばらく理解できなかったよ。
68 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 05:10:29 ] シムラーセミコロンセミコロン
69 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 11:30:27 ] >67 上のdoはwhile(*(p-1))じゃないと。
70 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 11:36:56 ] 寧ろどちらかというと while (p[0] = q[0], p++, q++, p[-1] != '\0') ; だな。
71 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:06:29 ] #include<stdio.h> int main(void) { FILE *fp; fp=fopen("test.txt","w"); if(fp==NULL){ printf("エラー\n"); return 1;} fprintf(fp,"ファイルに書き込みました。\n"); fclose(fp); return 0; } このような処理を行う時に、return 1とreturn 0の違いはなんですか? return 0で代用しちゃだめ?
72 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 00:26:48 ] >>71 駄目じゃあないけど、 プログラムが正常終了したときに0を返し、 異常終了したときに0以外を返すのが慣習なので、 特段の理由がないときは慣習に従っておくのが得策。
73 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:00:43 ] プログラムを呼び出すプログラムでは、呼び出して返ってきたときに そのreturnの値を参考にするようになってることがある。 呼び出したプログラムが成功裏に動いたときに限って後続の処理を行うとか。 練習で作るようなプログラムでは実質的にはどんな数を返してもいい。
74 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:00:45 ] CPad for Borland C++Compilerでプログラミングしています。 #include <stdio.h> int main() { char str[] = "tanaka tarou"; char str2[100]; char *p,*q; p = &str[0]; q = &str2[0]; while(*p != '\0'){ if((*p != 'a') && (*p != 'i') && (*p != 'u') && (*p != 'e') && (*p != 'o')) *(q++) = *p; p++; } printf("%s ---> %s\n",str,str2); return 0; } 文字列の子音だけを取り出して表示するプログラムを作りたいのですが、上記のプログラムを実行すると tanaka tarou ---> tnk tr@ のように最後にまったく関係のない文字が表示されてしまいます。その理由と解決策を教えてもらえないでしょうか?
75 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:06:19 ] str2に'\0'を入れ忘れているからじゃないか?
76 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:32:01 ] printfの直前に *q = '¥0';
77 名前:74 mailto:sage [2007/03/18(日) 02:17:01 ] >>75-76 回答ありがとうございます!解決しました。 なんともないように見えることもあるみたいですが、\0が抜けているとこういった不具合が起こるんですね。
78 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 10:30:31 ] 自分で決めた位置に¥0を入れないと、「運良く」その先に¥0が入っている ところが見つかるまでずーーーーっと文字列が続いていることになってしまう。
79 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:44:10 ] 整数はint型、文字はchar型を使うのが原則のようですが、 文字はコンピュータの中で数字で扱われていることと、 char型が0〜255、int型がそれ以上の範囲の数字を扱えることを考えると 文字を扱う時もint型でかまわないのでは?と思いました。 実際、int型で1文字出力できました。具体的には下です。 int a; a=getchar(); printf("%c\n",a); return 0; しかし、文字列をint型で扱おうとすると、コンパイル時にエラーとなります。 int a[50]="Hello"; printf("%s\n",a); return 0; なぜ、int型では文字列が扱えないのか理解できません。
80 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:59:24 ] > a=getchar(); getcharはEOFも返すのでint型を返すと宣言されており、実は正解。 EOFの場合を弾いてからchar型として扱うべき > printf("%c\n",a); 可変個引数では全てint以上に拡張されて引数が渡される規則。 char型の値を渡そうとint型の値を渡そうと正常に動いてしまう。 > int a[50]="Hello"; できないという規則になっているからとしか言えない。 int型の配列に文字列を無理やり入れる方法はあるが、 文字列を扱う関数はchar配列、つまりsizeof (char) == 1バイトずつ 文字がメモリに格納されることを前提にコードが書かれているので、 無理にint型の配列にしたところで、正しく動作しない。
81 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 14:14:28 ] >int a[50] = "Hello"; これは、 int a[50]; a[0] = 'H'; a[1] = 'e'; a[2] = 'l'; a[3] = 'l'; a[4] = 'o'; a[5] = '\0'; とするか int a[50]; for (int ic = 0; a[ic] = "Hello"[ic]; ++ic) ; とすれば実装できなくは無いな。
82 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 14:16:54 ] int a[50] = {'H', 'e', 'l', 'l', 'o', '\0'}; でいいじゃない
83 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 15:13:05 ] >>80-82 ありがとうございます char a[50]="Hello"; と char a[50]={'H','e','l','l','o','\0'}; は違うのでしょうか? 手持ちの本では、特に違いは書いてないのですが・・・
84 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 15:18:10 ] "Hello" は char[] 型 {'H','e','l','l','o','\0'} は文脈によって char[] とも int[] とも解釈できる。
85 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 15:23:15 ] "hello"のような文字列リテラルはchar配列を初期化するのに使える (その場合{'H', 'e', 'l', 'l', 'o', '\0'}のように解釈する) という規則が特別に設けられている。 だからint a[50] = "Hello";はできない。 でもwchar_tがintとなっている環境なら、int a[50] = L"Hello";でいけるはず。 率直にwchar_t使えと言うとこだが。
86 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 15:49:35 ] >>84-85 なるほど。試してみたところ、 int a[50]={'H','e','l','l','o','\0'}; ○ char a[50]={'H','e','l','l','o','\0'}; ○ int a[50]="Hello"; × char a[50]="Hello"; ○ でした。 int a[50]={'H','e','l','l','o','\0'}; が>>80 で言っていたint型の配列に 文字列を無理やり入れる方法にあたるんですかね? また、>>80 で>EOFの場合を弾いてからchar型として扱うべき とありますが、どんな風にするんですか?
87 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 15:57:21 ] 文字列をintで扱うって言っても、ライブラリ関係を全部自作しないといけないよ。
88 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 22:59:37 ] まあ試しに int a[50]={'H','e','l','l','o','¥0'}; puts((char *)a); をやってみるこった。思った通りの結果にならないから。 というわけで>>87 になる。
89 名前:デフォルトの名無しさん [2007/03/19(月) 10:30:28 ] 質問お願いします。 char a[100],b[100]; int i; i = 0; do { a[i] = b[i]; } while (a[i++] != '\0'); を、for文に書き換えたいのですが、 どうすれば良いでしょうか? 一応、 for ( i = 0; a[i] != '\0'; i++) { a[i] = b[i]; } としてみたのですが、うまくいきません。
90 名前:デフォルトの名無しさん [2007/03/19(月) 10:57:27 ] >>89 です。 解決しました。 もう大丈夫です。失礼しました。
91 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 13:38:13 ] 課題でislowerを使わない(islowerのプログラムを自作する)というものが出たのですが、 どこから手を付けたら良いかさっぱり分かりません。 ヒントで良いので教えていただけませんか?
92 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 13:43:09 ] 1.文字がアルファベットの小文字かどうか判定する 2.小文字だったら大文字に変換する
93 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 13:51:02 ] >>92 さんありがとうございます。 ヒントを手がかりにしてやってみます。
94 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 14:08:58 ] その素直なとこに免じてさらにヒントだ。 1.文字は数字で表され、aからzは順番に数字が割り当てられている。 2.大文字と小文字の差は一定。
95 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 14:15:35 ] >>91 です。 ありがとうございます。 ASCIIコードの大文字と小文字の差を利用すれば良いんですね。 だんだん分かってきました。 ありがとうございます。
96 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 15:30:03 ] 遅くなりましたが>>91 です。 お陰でislower出来ました。 isupperのプログラムも真似してやってみたら出来ました。 >>92 >>94 さん、親切に教えてくれてありがとうございました。
97 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 15:45:07 ] プログラミングの学習過程上では「そんなこともある」程度の認識でもOK な雑談: C言語はアスキーコードでない、アルファベットの並びが素直じゃない文字 セットで動くことを認めているので、アスキーを仮定するのは行儀が悪いと 言えば悪い。また、英語以外では大文字小文字の規則が少々複雑なこともあ り、単純な引き算では片付けられないこともある。
98 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 04:39:49 ] GetWindowTextで取得した文字列を他のプロセスにペーストするには どうしたらいいでしょうか
99 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 07:07:20 ] WM_SETTEXT メッセージを直接送ったら良かったと思う。
100 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 10:16:50 ] WM_SETTEXTがまずいならWM_COPYDATAという手も。 それで間に合わないならプロセス間通信