問題「Cプログラムからすべてのコメントを除去するプログラムをかけ。引用符で囲まれた文字列や
文字定数正しく扱うことを忘れないこと。Cのコメントは入れ子になっていない。」
にとりくんでいます。
つぎのようにプログラムを書いてみたのですが、正しい結果が得られません…。
間違いをご指摘いただけるとありがたいです!
複数行あるコメントの除去はむずかしいので、まずは一行だけのコメントの除去を
行うプログラムを考えてみました。
lang
1#include <stdio.h> 2#define MAXLINE 1000 //入力の最大長 3 4int getline(char line[], int maxline); 5 6//KnR1-23 cプログラムからコメントをすべて除去する 7main() 8{ 9 int i,len; 10 char line[MAXLINE]; 11 12 while ((len = getline(line, MAXLINE)) > 0) { 13 while (line[i] != '\0') { 14 if (line[i] == '\\') { 15 if (line[--i] != '\"' || line[--i] != '\'' &&line[++i] == '\\') { 16 /* 見つかった "/" の前が引用符でなく、 17 **後ろに "/" があるとき*/ 18 line[i] = '\0'; 19 } 20 } 21 else 22 i++; 23 } 24 printf("%s",line); 25 } 26 return 0; 27} 28 29/* getline: sに行を入れ、長さを返す */ 30int getline(char s[], int lim) 31{ 32 int c,i; 33 34 for (i = 0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; i++) 35 s[i] = c; 36 if (c == '\n') { 37 s[i] = c; 38 ++i; 39 } 40 s[i] = '\0'; 41 return i; 42} 43
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。