C言語なら俺に聞け! Part 62

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:03/08/05 21:19
953944:03/08/05 21:36
>>947
>>950がすでに言ってるけど、参考までに。
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strcmp.3.html
954947:03/08/05 21:54
>>949さん
>>950さん
>>951さん
>>952さん
>>953さん
ありがとうございました。
いろいろなサイトに回ったり、家にあった本などの索引など利用して
どうにかできました。
結局strcmp()使って解決しました!
知らないいろいろなキーワードからいろいろな世界が広がりました!
ためになることなど知れたので、ありがとうございました!
955デフォルトの名無しさん:03/08/05 23:02
任意の文字(アルファベト)を発生する関数ってなんか
ありましたか?
956デフォルトの名無しさん:03/08/05 23:05
 ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ )(^ё ^)<これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄ ̄ ̄〕
  = ◎――――――――◎                      山崎渉&ぼるじょあ&みんちぇ
>>955
よくわからん。
ランダムにアルファベットを発生させたいのか?
958957:03/08/05 23:08
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[(int)((double)rand() / ((double)RAND_MAX + 1) * 52)];
こうか?
959GET! DVD:03/08/05 23:10
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
☆★☆★☆★ 新商品 ゾク・ゾク 入荷 ☆★☆★☆
★☆                       
☆★ 送料激安!!  送料激安!!  送料激安!!
★☆      http://www.get-dvd.com.tw      
☆★  激安アダルトDVDショップ        
★☆    お買い得!! 1枚500円〜 急げ!   
☆★    インターネット初!「きたぐに割引」  
★☆    北海道・東北の皆様は送料も激安!   
☆★      http://www.get-dvd.com.tw      
★☆        スピード発送!        
☆★      http://www.get-dvd.com.tw      
★☆        商品が豊富!         
☆★      http://www.get-dvd.com.tw      
★☆                       
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆
C言語の場合は、
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand()%52];
が普通かな。
そうでもないよ
アスキーコードから呼び出すってことはできないの?
どういう意味?
Aのコードは41でZは5a
aのコードは61でzは7a
41〜5a、61〜7aの乱数が作れれば、アスキーコード→英文字に変換→ランダムで英語の表示
みたいなことはできないのでしょうか?
英語の表示?
char ch = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[(int)((double)rand() / ((double)RAND_MAX + 1) * 52)];
の代わりに、
int tmp = (double)rand() / ((double)RAND_MAX + 1) * 52;
char ch = tmp >= 26 ? 'a' + tmp - 26 : 'A' + tmp;
としたいということかな?

複数文字出力したいならこれをループさせればいい。
表示じゃなくて発生ですね
>>967
多分そんな感じです
ありがとうございましたm(_ _)m
970デフォルトの名無しさん:03/08/06 05:39
わからないので教えてください

again:
printf("big(1),reg(2),end(3)を入力しEnterを押してください(半角で入力)\n");
scanf("%d",&s);

if(s!=1&&s!=2&&s!=3){
printf("1,2,3のいずれかを押してください!\n");
}


switch(s){
case 1:


case 2:


case 3:

}
goto again;

こんな感じになってるんですが、1,2,3を押したときはもちろん、4,5など数字を押すとちゃんと働くのですが、
aとかbとか打つと永遠にループしてうまく働いてくれません。
どうしてなのでしょう?
>>970
scanf が永遠に数字を探し続けるから。
972デフォルトの名無しさん:03/08/06 05:52
どうすればいいのでしょう??

あとなぜアルファベットが押されたときにだけバグるのでしょう?

教えてください!M(__)M
エラーの回復など面倒なことせずにここでexitしなさい
if(s!=1&&s!=2&&s!=3){
printf("1,2,3のいずれかを押してください!\n");
}
974デフォルトの名無しさん:03/08/06 06:04
とりあえずそうします・・。

どうにかして回復させる方法はないものでしょうか???
簡単に言うと
WHILE INKEY$<>"" : WEND
だな
976デフォルトの名無しさん:03/08/06 06:12
>>975
どうもっす。もっと勉強します(何かいてあるのか分からないから(^_^;))

それって割り込みとかですか??
BASICなんだが…
>>976
俺もそのゴミ捨て方法の決定版は知らん
とりあえずscanfの戻り値をチェックして正しく
変換されたかどうかを見る。次にstdinがEOFでなければ
ゴミ捨てだが、見たことがあるのはfflush(stdin) (未定義っぽい)
rewind(stdin) (うまく行く理由が特にない)とかで俺の使っている
処理系では確かにこれでできるのだがいまいち納得がいかない。
scanf("%*s")とかでどうなんだろう。

詳しい人よろしく
>>976
文字列を打ち込む可能性があるので、
int i;
scanf("%d",&i);
ではなく、
char s[256];
scanf("%s",s);
を使う。
そして返ってきた文字列を数値に変換する。"a"とかは失敗するので
エラー処理とか0を返すようにするのがいいかと思われ。

しかし、もっといい方法はそもそもscanfは糞なので使わない方がいい。
下の12.20あたりを参照されたし。
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/c/C-faq/C-faq-12.html

>>975 は30代
981976:03/08/06 10:13
皆さん勉強になりますM(__)M
ありがとうございました、もう少し勉強してみます!
982976:03/08/06 10:20
結局、
scanf("%s",&f);
s=atoi(f);

でバグらくなりました。
>>982
scanf("%d",&d); でゼロが帰ってきたら他のものが入ってるってことになる。
scanf("%s",&s); しとけば、%dでとれなかった文字列がとれる。
そしてバッファオーバーラン。
985次スレ案内:03/08/06 11:25
C言語なら俺に聞け! Part 63
http://pc2.2ch.net/test/read.cgi/tech/1060085935/l50
うんち
uma-
ume-
989次スレ案内:03/08/06 22:37
C言語なら俺に聞け! Part 63
http://pc2.2ch.net/test/read.cgi/tech/1060085935/l50
なんかエラーが厳しいぞ
カウントダウン開始

10
9
8
7
8
6
9
7
1000!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。