C言語なら俺に聞け! Part 112
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/08/08(月) 01:32:01質問する前には最低限検索を。
GUIなどの標準Cではできない事の質問は使用している開発環境のスレへGo! (←ここ注目)
ソース丸投げ、宿題、書籍 は専門の別スレがあるのでそこへさようなら。
エラー(警告含む)が起きたのならばエラーメッセージを書きましょう。
C FAQ 日本語訳
http://www.kouno.jp/home/c_faq/
Cプログラマ必読 ・プログラミング言語C(通称 K&R)
http://www.amazon.co.jp/exec/obidos/ASIN/4320026926/
C言語なら俺に聞け! Part 111
http://pc8.2ch.net/test/read.cgi/tech/1121657911/
他の過去ログはここに
http://nssearch.hp.infoseek.co.jp/clang/
0057デフォルトの名無しさん
2005/08/08(月) 20:16:01そのファイル名を使う!
0058デフォルトの名無しさん
2005/08/08(月) 20:16:12sprintfだっていわれてるだろ
0059デフォルトの名無しさん
2005/08/08(月) 20:18:53char filename[256];
for(int i = 0; i < 10; ++i)
{
sprintf(filename, "a%d.txt",i);
fp = fopen(filename, "r");
;
fclose(fp);
}
0060デフォルトの名無しさん
NGNG改定されたのってC++の話でしょ。
0061デフォルトの名無しさん
2005/08/08(月) 20:25:49006234
2005/08/08(月) 20:26:01ありがとうございます。
自分の知らないプログラムを見ると、そんな手があったか〜と毎度思ってしまうほど鮮やかです。
毎度と言えるほどプログラムを書いた事はありませぬが。
本当にありがとうございました!!
0063デフォルトの名無しさん
2005/08/08(月) 21:18:230064デフォルトの名無しさん
2005/08/08(月) 21:29:31>>63
>>63
0065デフォルトの名無しさん
2005/08/08(月) 21:30:370066デフォルトの名無しさん
2005/08/08(月) 21:34:440067デフォルトの名無しさん
2005/08/08(月) 22:23:190068デフォルトの名無しさん
2005/08/08(月) 22:35:540069デフォルトの名無しさん
2005/08/08(月) 22:55:24ありました
0070デフォルトの名無しさん
2005/08/08(月) 22:57:41正規表現でどうしろっていうの?
自分で抜けって事?
>>69
過去形なのはどういう意味?
0071デフォルトの名無しさん
2005/08/08(月) 23:03:41char* path = (ファイルパス)
char html[MAX_HTML];
char url[MAX_URL]
char *link_begin, *link_end;
FILE* fp;
fp = fopen(path, "r");
fread(html, sizeof(char), MAX_SIZE-1, fp);
fclose(fp);
link_begin = html;
while((link_begin = strstr(link_begin, "href=\"") != NULL) {
link_begin += 6;
link_end = strchr(link_begin, '\"');
*link_end = 0;
strcpy(url, link_begin);
*link_end = '\"';
}
(目的の処理)
link_begin = link_end+1;
}
適当に書いてみた。
007271
2005/08/08(月) 23:05:30ミス。括弧が足りなかった。
while((link_begin = strstr(link_begin, "href=\"")) != NULL) {
0073デフォルトの名無しさん
2005/08/08(月) 23:09:210074デフォルトの名無しさん
2005/08/08(月) 23:14:57007571
2005/08/08(月) 23:16:46恥かくだけだからもうやめるわ
0076デフォルトの名無しさん
2005/08/08(月) 23:42:28うちも書いて欲しいから
めっちゃ応援してる
頑張って書いてくれ
0077デフォルトの名無しさん
2005/08/09(火) 00:08:48/*ノーワーニング、ノーエラーなら彼女がよりを戻しに来る*/
//"href=\""があるか調べる
char *ishref(char *str)
{
int len[2], i, cmp;
char *ret;
len[0] = strlen("href=\"");len[1]=strlen(str);
cmp = -1;
for(i=0;i+len[0]<len[1]&&cmp!=0;i++){
cmp = strcmp("href=\"", str);
if(cmp==0){
ret = str+i+len[0];
}else{
ret = NULL;
}
return ret;
}
void folink(FILE *fo, FILE *fhtml)
{
char ss[256];
char *p[2];
while(fgets(ss, 256-1, fhtml) != NULL){
if((p[0]=ishref(ss))!=NULL){
p[1]=p[0];
while(*p[1]!='\"')p[1]++;
*p[1]='\0';
fprintf(fo, p[0]);
}
}
}
0078デフォルトの名無しさん
2005/08/09(火) 00:11:45だった・・・
もう駄目だな。。
0079デフォルトの名無しさん
2005/08/09(火) 00:19:420080デフォルトの名無しさん
2005/08/09(火) 00:21:03読むと失恋する
0081デフォルトの名無しさん
2005/08/09(火) 00:23:110082デフォルトの名無しさん
2005/08/09(火) 00:40:19涙忘れるソース
0083デフォルトの名無しさん
2005/08/09(火) 00:42:20ねえマスター、
ねえマスター、はやくぅ
0084デフォルトの名無しさん
2005/08/09(火) 00:49:280085デフォルトの名無しさん
2005/08/09(火) 00:53:240086デフォルトの名無しさん
2005/08/09(火) 02:06:31void main(void) {
printf("ガンガレ!\n");
}
0087デフォルトの名無しさん
2005/08/09(火) 02:19:01http://freshmeat.net/projects/libhtmlparse/
0088デフォルトの名無しさん
2005/08/09(火) 04:11:100089デフォルトの名無しさん
2005/08/09(火) 07:14:03{
char target[] = "href=\"";
char *ret;
int targetlen = strlen(target);
int len = strlen(str);
int i, j, k;
j=0;
for(k=0;k+targetlen<len;){
for(i=0;i<targetlen;){
while(isspace(str[j])){j++;k++;}
if(str[j]==target[i]){
i++;
}else{
break;
}
}
}
if(i==targetlen){
ret = str + j + 1;
}else{
ret = NULL;
}
}
こうかー
0090デフォルトの名無しさん
2005/08/09(火) 08:57:16C言語を覚えたいのですが、環境を整える段階で早くも詰まっています。
Visual C++、gcc、LSI C-68等のコンパイラでオススメの物を教えて下さい。
当方、windousXPです。
0091デフォルトの名無しさん
2005/08/09(火) 09:11:38スレ違い。VCでもgccでもいいけど、整備の仕方が判らないなら該当スレへどうぞ。
LSI-Cは無条件に薦めない。
0093デフォルトの名無しさん
2005/08/09(火) 20:06:26int unko(int a, int* b, int c) {
return a+*b+c;
}
int (*ok)(int a, void* b, int c);
ok = unko;
としてもコンパイルエラーにはならないのですが、(gccだとデフォで警告orz)
これは一般的なテクニックとして利用しても大丈夫なのでしょうか?
0094デフォルトの名無しさん
2005/08/09(火) 20:08:29その位置にvoid* 以外の型のポインタ変数を持つ場合でも、
コンパイルエラーにならないってことです。
0095デフォルトの名無しさん
2005/08/09(火) 20:11:19おまえのオナニーテクニックだろ
unkoの型をvoid*に合わせて演算するところでintにキャストせぇよ
なにがやりたいんだかわからん
0096デフォルトの名無しさん
2005/08/09(火) 20:15:59この様な使い方(プロトタイプに合ってない関数をキャストなしで代入)は
すべきじゃないかを問いかけただけです。
>unkoの型をvoid*に合わせて演算するところでintにキャストせぇよ
すみません。例が意味不明でした^^
これはあくまで単なる例なので、気にしないでください。
0097デフォルトの名無しさん
2005/08/09(火) 20:16:59if(〜〜){
if(〜〜){
break;
}
}
hoge++;
}
これでbreakが実行されるとforから抜けることになるんですか?
それとも外側のifを抜けてforのhoge++が実行されるのでしょうか?
0098デフォルトの名無しさん
2005/08/09(火) 20:19:34クリヤーする必要があるんですか?
0099デフォルトの名無しさん
2005/08/09(火) 20:23:07まずはおまえ自身でやってみろよ
なんだかもう・・・
0100デフォルトの名無しさん
2005/08/09(火) 20:25:11書き込みも友人のPCなのでコンパイラをインストできないんです。
今日は泊まりなので家にも帰れませんし。。
0101デフォルトの名無しさん
2005/08/09(火) 20:26:250102デフォルトの名無しさん
2005/08/09(火) 20:28:50帰ってから思う存分やれ
0103デフォルトの名無しさん
2005/08/09(火) 20:31:101.errnoは、エラーになったときだけセットされる
2.errnoは、エラーになったときだけ参照する
1.2.より、通常は明示的にクリアする必要は無い
0104デフォルトの名無しさん
2005/08/09(火) 20:33:27調べると「ループやスイッチ」が対象みたいなのでforから抜けるみたいですね。
どうもでした
0105デフォルトの名無しさん
2005/08/09(火) 20:37:20switch文を抜けるのまで 同じ「break」 である必要はあったのかね・・・
sbreak とか、別ものにして欲しかったと思うことは無いか?
答えろ! >>107!
0106デフォルトの名無しさん
2005/08/09(火) 20:39:42厨房は黙ってろよ
0107デフォルトの名無しさん
2005/08/09(火) 21:05:27黙ってろ
0108デフォルトの名無しさん
2005/08/09(火) 21:09:33ないな。以上
0109デフォルトの名無しさん
2005/08/09(火) 21:14:51ない。あとおまえは黙ってろ
0110デフォルトの名無しさん
2005/08/09(火) 21:16:400111デフォルトの名無しさん
2005/08/09(火) 21:18:34一般的なテクニックではないな。
Cはそういうところのチェックが甘いし。
0112デフォルトの名無しさん
2005/08/09(火) 21:23:21ひどいじゃん
0113デフォルトの名無しさん
2005/08/09(火) 21:24:24forやwhileの中で、switch文の中からbreakしたくなったことは
一度も無いのか?
0114デフォルトの名無しさん
2005/08/09(火) 21:25:410115デフォルトの名無しさん
2005/08/09(火) 21:26:20テクニックというには、使いどころが無さ杉な気がする。
0116デフォルトの名無しさん
2005/08/09(火) 21:26:47俺は全部gotoにしてる
0117デフォルトの名無しさん
2005/08/09(火) 21:27:540118デフォルトの名無しさん
2005/08/09(火) 21:30:39やはりそうですか。ありがとうございました。
>>115
ポインタをコールバックで渡すとき、
呼ばれた側だけが型の情報を知っている場合に、
別の変数にキャストしなくてもいいので便利かな、と思いまして。
0119デフォルトの名無しさん
2005/08/09(火) 21:32:33ストールマンとコンパやって、やつが酔っ払ってる隙に
gccのソースを直す。
0120デフォルトの名無しさん
2005/08/09(火) 21:35:38俺は極力goto使わないようにしてる
「gotoレスプログラミング」っていうぐらいだし
0121デフォルトの名無しさん
2005/08/09(火) 21:41:11「後藤カスプログラミング」っていうぐらいだし
0122デフォルトの名無しさん
2005/08/09(火) 21:48:590123デフォルトの名無しさん
2005/08/09(火) 22:02:24多重ループを脱出するときは、「仕方がない」という意識ではなく、ここぞ使う場面だ
と思って使うが。
0124122
2005/08/09(火) 22:11:06JavaとかDにはラベル付breakなるものがあるらしい。これなら多重breakにgotoを使う必要がなくなる。
これがないCでは「仕方なく」gotoを使うことになる。もちろんラベル付breakをCに導入しろとは全然思っていない。
俺はJavaもDも使ったことがないけど。
0125デフォルトの名無しさん
2005/08/09(火) 22:11:47そういう場面になったら俺の場合、gotoを使わなくてすむようにロジック組みなおす。
まあ仕事でやってる人はそういうわけにもいかないんだろうけど
0126デフォルトの名無しさん
2005/08/09(火) 22:29:02「引数」と「値を返す」
の基本的な二つの語句の意味がいまいち理解しきれません。
イメージとしては掴みかけているような感じはするんですけど。。。
0127デフォルトの名無しさん
2005/08/09(火) 22:30:01>もちろんラベル付breakをCに導入しろとは全然思っていない
俺はぜひ導入してほすぃと思うが。害はないだろ?
0128デフォルトの名無しさん
2005/08/09(火) 22:32:00↓引数
← foo(a)
値を返す
0129デフォルトの名無しさん
2005/08/09(火) 22:33:410130デフォルトの名無しさん
2005/08/09(火) 22:34:460131デフォルトの名無しさん
2005/08/09(火) 22:35:170132デフォルトの名無しさん
2005/08/09(火) 22:35:48s/悩んで/悲しんで/
0133デフォルトの名無しさん
2005/08/09(火) 22:37:59「gotoを使っちゃダメ」ってエライ学者さんが言ったから使ってはいけない、
程度にしか理解してないのだろ?
0134デフォルトの名無しさん
2005/08/09(火) 22:38:570135デフォルトの名無しさん
2005/08/09(火) 23:02:23まだC言語もおまえらも存在していなかったわけだがな。
ttp://www.acm.org/classics/oct95/
0136デフォルトの名無しさん
2005/08/09(火) 23:11:15反対する気はないが、今さら導入したところで、あまり意味がないよな。
0137デフォルトの名無しさん
2005/08/09(火) 23:17:03学校でy=f(x)とか習ったかい?
0138デフォルトの名無しさん
2005/08/09(火) 23:20:11可読性損ねる馬鹿プログラマには参る
0139デフォルトの名無しさん
2005/08/09(火) 23:37:240140デフォルトの名無しさん
2005/08/09(火) 23:40:00習いました
0141デフォルトの名無しさん
2005/08/09(火) 23:41:29読み方プリーズ
しつけにこりてろをふく?
0142デフォルトの名無しさん
2005/08/09(火) 23:44:10あつ‐もの【▼羹】〘名〙
野菜や魚肉を熱く煮立てた汁物料理。◇「熱いもの」の意。
羹(あつもの)に懲こりて膾(なます)を吹く失敗にこりて、必要以上に用心深くなる。◇熱かった羹にこりて膾のような冷たい料理も吹いて冷ます意からいう。
0143デフォルトの名無しさん
2005/08/09(火) 23:44:52熱いものをはふはふして食べたあとに、冷たい副菜を思わずふーふーしてしまう様から、
ひどい目にあって、同じ目を二度と見ないように、過剰な反応をするの意。
0144デフォルトの名無しさん
2005/08/09(火) 23:51:550145デフォルトの名無しさん
2005/08/10(水) 00:01:00お前見込みないわ…コミュニケーション能力が…
0146デフォルトの名無しさん
2005/08/10(水) 00:03:49ということでしょう
0147デフォルトの名無しさん
2005/08/10(水) 00:04:540148デフォルトの名無しさん
2005/08/10(水) 00:10:57>羹(あつもの)に懲こりて膾(なます)を吹く失敗にこりて、必要以上に用心深くなる。
羹(あつもの)に懲(こ)りて膾(なます)を吹く 失敗にこりて、必要以上に用心深くなる。
>>144
ネタか?
0149デフォルトの名無しさん
2005/08/10(水) 00:54:510150データボックス
2005/08/10(水) 01:11:282次元配列を、それぞれの次元のインデックスや、1次元目の要素数からアドレス計算をしながら
ポインタ扱いして、更にchar * のメンバ変数で文字列を扱ったり、関数の引数にアドレスを渡し
て、関数の中では、もう一段階進んだポインタを扱うことになったりして、苦心惨憺してしまうのお。
関数ポインタの配列も必要だし。
そういうことで悩んでしまうが、どうしようかいな。
0151デフォルトの名無しさん
2005/08/10(水) 01:16:380152デフォルトの名無しさん
NGNG変に工夫しないで素直に組めば?
0153デフォルトの名無しさん
2005/08/10(水) 01:37:300154デフォルトの名無しさん
2005/08/10(水) 01:40:090155データボックス
2005/08/10(水) 01:44:210156デフォルトの名無しさん
2005/08/10(水) 01:59:06(バッサリ略)
センスの悪い奴がわかってるつもりでへんに頭をひねったつもりになっても、
ちぃ〜ともなぁ〜んの解決にもならん、というだけの話かと。
■ このスレッドは過去ログ倉庫に格納されています