ごめんなさい間違いました。
Cのコメントを除去するプログラムを
Cの文法で教えてください。
裸の版ていうのは
while(まだ行がある)
if(コメント開始文字列がある)
除去除去
....?なんか違うかな・・・(-_-)
954 :
デフォルトの名無しさん:02/03/19 00:50
ある文字列の中で、複数文字列からなるデリミッタの位置を返す関数を考えてるん
だけど、単一文字デリミッタならいけるんだけど、複数文字列だと配列に順番に
シフトしながら入れていって比較を繰り返すという感じにするしかないんでしょうか?
もうちょっとエレガントで少ないコード行でできませんかね?
956 :
デフォルトの名無しさん:02/03/19 01:08
>952
コメント除去はスチャラカでいいなら
1行をバッファに読み込む
そのバッファを一文字づつ読んでいってホワイトスペース、/*の並びをコメント開始
としてコメント終了の*/まで読み飛ばす。
でいいでしょう。でも複数行にわたったコメントとか文字列中の/*を見つけたときに
きちんと対応させようとすると結構やっかいです。とりあえず裸と言うことだから
上の仕様で書いてみたら。
>954
strstr使ったらうまくいきそうに思えるけど。デリミタのポインタが返ってくるんじゃないの?
>>955 >>956 ライブラリでそういう関数が既にあるんですね。
自分で作ろうとしてました。どうもです。
958 :
ビル・ジョブス:02/03/19 01:18
>>957 ANSI/UNICODEに気を付けて。
ビルはいわゆるEUCとかEBCDICは気をつけなくていい環境なんだね(藁
960 :
デフォルトの名無しさん:02/03/19 11:57
なるほどねぇ
961 :
デフォルトの名無しさん:02/03/19 12:15
>>948 「除去」って言葉が曖昧なんだけど、
コメントだけを表示するプログラム作ってみた。
参考にシル。
#include <stdio.h>
#define OUT 0
#define IN 1
#define BUFSIZE 8
int buffer[BUFSIZE];
int buffer_ptr = 0;
int getch(void);
void ungetch(int);
- つづく -
962 :
デフォルトの名無しさん:02/03/19 12:16
- つづき -
int main(void){
int c, d;
int state = OUT;
while((c = getch()) != EOF){
if(state == IN && c == '*'){
if((d = getch()) == '/'){
putchar(c);
putchar(d);
putchar('\n');
state = OUT;
continue;
}else{
ungetch(d);
}
}
if(state == OUT && c == '/'){
if((d = getch()) == '*'){
putchar(c);
putchar(d);
state = IN;
continue;
}else{
ungetch(d);
}
}
if(state == IN){
putchar(c);
}else{
continue;
}
}
return 0;
}
- つづく -
963 :
デフォルトの名無しさん:02/03/19 12:17
- つづき -
int getch(void){
int c;
if(buffer_ptr <= 0){
c = getchar();
}else{
c = buffer[buffer_ptr];
--buffer_ptr;
}
return c;
}
void ungetch(int c){
if(buffer_ptr <= BUFSIZE - 1){
buffer[buffer_ptr] = c;
++buffer_ptr;
}else{
fprintf(stderr, "Error: buffer full\n");
exit(1);
}
}
課題は自分でとくことに意味があると思うぞ。
964 :
デフォルトの名無しさん:02/03/19 12:23
新スレは?
コードがべたでスマソ。
間違ってたら誰かなおしといてクリ。
ところで次スレはどこ?
967 :
デフォルトの名無しさん:02/03/19 12:48
文字列定数に含まれた /* */ はスキップしないのか?
ぜんて、がいい
>C言語なら、俺に聞いてくれませんか?==15;
腰が低いのはイヤだな。なんとなく。
C言語なら私におまかせ♪+=15;
媚びてみるというのは?
972 :
デフォルトの名無しさん:02/03/19 13:30
973 :
デフォルトの名無しさん:02/03/19 13:58
C言語なら、他に聞け! <15>
975 :
デフォルトの名無しさん:02/03/19 14:07
ハンドルされてない例外って何ですか?
977 :
デフォルトの名無しさん:02/03/19 14:33
すいません・・・
catchってなんですか?
978 :
デフォルトの名無しさん:02/03/19 14:39
WindowsXPにVC++を使っているのですがC言語でHTMLのタグなどの他言語の命令文などはどうやって取得するのでしょうか?
たとえばHTMLなら<a href="URL">飛んでけ</a>や<br>
などというものなどの場合?
979 :
デフォルトの名無しさん:02/03/19 14:42
HTMLのタグの話しなら、
XMLやHTMLのタグを解釈するライブラリを探して使え。
それがなければ構文解析をするプログラムをCで書け。
981 :
デフォルトの名無しさん:02/03/19 14:47
>>978 「IEコンポーネントを使い倒すスレ」ってのがあったな。
>>978 取得した後に何をやるのかがわからなければなんともいえない。
IEコンポーネントを見てみます
わざわざありがとうございます
C言語だけなら、俺に聞け! <15>
C言語っぽく俺に聞け! <15>
C言語なら、俺が聞く! <15>
C言語なら、俺を見ろ! <15>
C言語から俺が逝く! <15>
そろそろ番号がきびしくないか。
そろそろ日下部はやめようぜ。
それにしても2週間でスレ一つ使うとはかなり人の多いスレですね。
989 :
デフォルトの名無しさん:02/03/19 15:09
漏れ的には Dennis Ritchie がいいな。
残り10になッても誰もスレ立てようとしないのが
このスレのいい加減さを表してていい(藁
プログラミング作法・ハーニンハン博士
( ;´Д`)
わーいわーい、ぜんてだぜんて!
996 :
女性雑誌にも載ってるよ♪:02/03/19 15:32
女性雑誌 (;´Д`) ハアハア
む
999 :
デフォルトの名無しさん:02/03/19 16:16
後1…
1000 :
デフォルトの名無しさん:02/03/19 16:18
1000
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。