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


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

くだすれC言語(初心者用) Part.2



1 名前:デフォルトの名無しさん [2007/02/22(木) 08:16:03 ]
このスレッドはC言語について、
他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
C使いが優しくコメントを返しますが、
お礼はC言語の布教と初心者の救済をお願いします。

くだすれC言語(初心者用)
pc10.2ch.net/test/read.cgi/tech/1153542424/

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という手も。
それで間に合わないならプロセス間通信

101 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 10:42:13 ]
>>99
>>100
ありがとうございます。
自分、ズブズブの素人なもので、なかなか上手くいきませんが
調べまくって頑張りますです。

102 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 17:03:48 ]
例えば、data1に{2,4,22,5,3}とデータが初期化されていて、
data2にdata1のデータを小さい順に並び替えるにはどうすれば良いでしょうか?
sortはまだ習っていないので、数値を比較して、
小さかった順にdata2に代入していくという方法でやっていきたいのですが。

103 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 17:08:14 ]
自分が思う方法でやってごらん
カードとか用意して自分で手作業で並べかえてみてその方法をプログラムにしてみる

104 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 17:11:54 ]
一番小さいカードを選んで先頭に置いて、二番目に小さいカードを選んで二番目に置いて、以下同様に。

105 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 17:22:52 ]
>>103-104
ありがとうございます。
そのまま代入していく形になるんですね。
本当に初心者なものですみません。


106 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 19:43:57 ]
#include<stdio.h>

int main(void)
{
int date1[5]={2,4,22,5,3};
int i,j,k,date2[5];

for(i=0;i<4;i++){
for(j=i+1;j<5;j++){
if(date1[i]<date1[j])
{k=date1[j];
date1[j]=date1[i];
date1[i]=k;}
}
}

for(i=0;i<5;i++)
date2[i]=date1[i];

for(j=0;j<5;j++)
printf("%d\n",date2[j]);

return 0;
}

>>102をやってみた。
こっちも初心者なもんで、評価たのむ。
forばっかでウザいとは思う。

107 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 20:06:20 ]
>>102
>数値を比較して、小さかった順にdata2に代入していくという方法。
これも立派な既知のソートアルゴリズムだ。Selection sort。


108 名前:デフォルトの名無しさん mailto:age [2007/03/20(火) 20:06:24 ]
#include <"ファイル名">
このファイル名の部分についての質問です。

このファイル名は、大文字、小文字を区別してないみたいですが、
これって、仕様なんですか?

初歩的な質問ですが、よろしくお願いします。


109 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 20:07:58 ]
FATファイルシステム、MS-DOS、Windows(特にWindows NTのWin32サブシステム)などの仕様



110 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 20:41:44 ]
>>109
なるほど、仕様なんですね。
安心しました。

回答ありがとうございました。

111 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 22:26:47 ]
>>109
NTFSも区別しませんが何か。

112 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 22:32:03 ]
Macも、UNIXベースなくせにデフォルトインストールでは区別しないから
Macで動いてるRubyスクリプトを他所に持って行ってハマったことがある。


113 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 22:52:45 ]
>>111
NTFSは区別するよ。
Windowsの標準ファイルシステムドライバがFATとの互換性を維持するために、
大文字小文字の違いしかないファイルを同一視してるだけ。
SFUインストールすればオプションでCaseSensitiveな環境も構築できる。

114 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 06:33:29 ]
#include <stdio.h>

main() {
printf("Hello!");
return 0;
}
これで普通ならOKですよね?
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
sample1.c:
エラー E2209 sample1.c 1: インクルードファイル 'stdio.h' をオープンできない
警告 W8065 sample1.c 4: プロトタイプ宣言のない関数 'printf' の呼び出し(関数 main
)
*** 1 errors in Compile ***
って表示されて出力できないよorz

115 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 08:24:08 ]
>>114
コンパイラの環境設定に失敗しています。コンパイラの添付資料をよく読んで設定しなおしてみてください。

116 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 09:23:52 ]
エディットボックスに入力された文字列をOKボタンを押すと
クリップボードにコピーされるようにしたいのですが、上手く行きません。
VC++ Win32API スマートデバイス WM5.0SDKな環境です。

HWND hWnd;
HWND g_hEditbox;
TCHAR buff[256];

GetWindowText(g_hEditbox,buff,sizeof(buff)/sizeof(TCHAR));

if(OpenClipboard(hWnd))
{
 EmptyClipboard();

 char* buff;
 UINT size = strlen(buff)+1;

 HLOCAL clipbuffer = LocalAlloc(LPTR, size);
 strcpy((char*)clipbuffer, LPCSTR(buff));

 SetClipboardData(CF_TEXT,clipbuffer);
 CloseClipboard();
}

SetWindowText(g_hStatic,buff)でHWND g_hStaticにbuffの文字列は表示出来ています。
よろしければご教示願います。

117 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 09:30:25 ]
クリップボードにセットするデータはメモリへのハンドルでないといけないので、
固定メモリでは駄目、LMEM_MOVEABLEにしないといけない。

118 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 09:46:33 ]
HLOCAL clipbuffer = LocalAlloc(LMEM_MOVEABLE, size);

こうなるのでしょうか。
んんん、上手く行かない

119 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 10:11:50 ]
メモリへのハンドルに対しては直接読み書きできない。
LocalLockを呼んでハンドルからメモリへのポインタを取得する必要がある。
そしてアンロックすると再びハンドルが利用可能になる。



120 名前:116 mailto:sage [2007/03/21(水) 10:17:17 ]
SetClipboardData(CF_UNICODETEXT,clipbuffer);

とすることでなんらかのデータがクリップボードにセットされました
ペーストしてもなにも追加されませんが。
プログラミング初めて2日目なもんでまだ全然理解出来てないです。
勉強してきます。


121 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 10:19:22 ]
SetClipboardDataでググれば色々サンプルが見付かると思う。

122 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 10:19:46 ]
つかいい加減スレタイ嫁

123 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 10:30:35 ]
別に環境依存ネタ禁止ではないしいいんじゃないのそれくらい

124 名前:116 mailto:sage [2007/03/21(水) 10:55:02 ]
Unicode用と非Unicode用のが混在していたのが問題だったようです。
char*をwchar_t*, strcpyを_tcscpyなどに置き換えると
ちゃんとクリップボードにコピーでき、ペーストも出来ました。

スレ違い失礼いたしました。
レスくださった方ありがとうございます。

125 名前:デフォルトの名無しさん [2007/03/21(水) 13:19:59 ]
#include <stdio.h>
int main(void) {
FILE *fp;
int i;
char ch[20];
fp = fopen("test1.txt","r");
if(fp == NULL) {
return 1;
}
printf("OPEN!!\n");
for(i = 0; i <1 ; i++){
fgets(&ch[i],20,fp);
}
printf("%s",ch) ;
fclose(fp);
return 0;
}
ファイルにabcdefgという文字列を書いておいてそれを読み取れたのですが、
for()のところの条件式をi<8としても、i<1としてもabcdefgと読み取れてしまう。
なぜ?

126 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 13:23:35 ]
>>125
fgets(&ch[i],20,fp);
はどういう動作をする?


127 名前:デフォルトの名無しさん [2007/03/21(水) 13:39:55 ]
>>125
すいません。わからないです。

128 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 13:48:10 ]
1文字ずつ読むにはfgetcを使う。
どうしてもfgetsで1文字ずつ読みたいなら読んでもいいが、
書き方が間違っている。

fgetsは、最大で指定した数(20)-1の数の文字(バイト)を読む。
ただし、ファイルの最後か、改行にぶつかるか、エラーが発生するとそこまで。

20は、第1引数で確保した配列のサイズではなく、読み込みたい最大のサイズ+1。

-1したり+1したりするのは、読んだ後、末尾にfgetsが¥0を書き込むから。


129 名前:: [2007/03/21(水) 17:29:07 ]
卒論でC言語を使ってシミュレーションしたいと考えているんだけど。
気温のデータがあって、10年後の気温がどうなっていくか?って
いうシミュレーションをC言語でできる?そもそもこの課題じたいプログラミング
ではできない?まだ卒論まで2年あって、C言語習ったばっかなんだけど、
こういう事プログラミングでできないかな?って思ってます。シミュレーション
をするのに最適な言語って何ですか?



130 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:33:43 ]
シミュレートの計算・方法が分かるならば余裕で出来る。

131 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:40:49 ]
可能かどうかはアルゴリズムに因るわけだが
その辺の記述が全く無いので何もいえない

たとえば理想的な放物線をシミュレートするのは難しいができる事、
でも貴方の人生をシミュレートするのは出来ないこと(出来るかも?)

二つの違いはシミュレートするためのアルゴリズムの違いに因る

132 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:53:38 ]
>>129
気温シミュレーションは、別にC言語を使わずともできる。

133 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:53:53 ]
>>129
曲線を分析するならCで十分だろう。
気象シミュレーターみたいなものが作りたいなら、
Cでもできるが、そういう計算に最適化された言語もある。

134 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 17:57:23 ]
>>129
正直先生に聞いたほうが早いと思うぞ

135 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:14:24 ]
ウィンドウの長さとかテキストで簡単に編集できるようにしたいんですが
形式は何がいいんでしょうか?iniとかcfgとかdefとか

136 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:16:34 ]
好きなのでいいよ

137 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:17:49 ]
>>135
拡張子はなにがいいかって質問?

138 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:17:53 ]
設定ファイルの拡張子ってことか?
俺はユーザーに書き換えられても問題ないデータは.iniを使ってる。

139 名前:129 [2007/03/21(水) 18:19:32 ]
意見、ありがとう。
気温か待機電力のシミュレーションをしようか迷ってます。
まぁ卒論だからもっと練らないとだめだろうけどね!
待機電力量を出す計算の仕方はわかるから、それを何十年後は
どうなるか?っていうのはシミュレーションできる?実際は
将来、待機電力量を少なくする装置なんかも現在開発されてて
シミュレーションとは違う結果になるんだろうけど、その違いを
説明していくのも面白いと思ってます



140 名前:135 mailto:sage [2007/03/21(水) 18:30:17 ]
>>136-138
レスd。
>>138
そういう意味です。ありがとう。

141 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:54:41 ]
>>140
ふつうのユーザが弄れるようにするなら
デフォルトで関連付けられてるiniかtxtがいんでね?

142 名前:デフォルトの名無しさん mailto:sage [2007/03/21(水) 18:55:37 ]
すまんWindowsならの話だなこれは






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

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

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