標準入力で、/~/のようなコメントの数を数えるプログラムです。
一行ごとの読み込みしかわからず、どうやって複数行にまたがるコメントを認識できるのかわかりません。また、/*/ も一つに数えてしまっているみたいです。
具体的にどこをどうしたらいいのか教えて下さい!
以下コードです。
#include<stdio.h>
#define BUFSIZE 1000
int comment(char buf[], int *flag){ // 関数を用意
int check = 0;
int i;
for (i = 0; '\0' != buf[i]; i++) { //受け取った文字が終端文字でなければループ if (0 == *flag) { //0を受け取る=前に*/があった or いままでフラグがたってない if ('/' == buf[i] && '*' == buf[i+1]){ // 受け取った配列に /* があればフラグを立てる flag=1 *flag = 1; } } else { if ('*' == buf[i] && '/' == buf[i+1]){ // */がきたらフラグを0に戻す *flag = 0; check = 1; //フラグが1,0と変化したらcheck=1 } } } return check;
}
int main(){
char buf[BUFSIZE]; //文字を入れていく配列
int line = 0; //コメントの行数を記録する変数
int flag = 0; //フラグ
while (NULL != fgets(buf, BUFSIZE, stdin)) { //標準入力された一行で読み込めるだけ文字を読み込む if (0 != comment(buf, &flag)) //comment関数にとぶ 配列とフラグを渡してcheckが1なら line++; } printf("%d/n", line); return 0;
}
回答4件
あなたの回答
tips
プレビュー