私はクレイグリストの結果のリストをフィルタリングするプログラムに取り組んでいます。比較的安い賃貸部屋を探したいです。完成したプログラムは、600ドルを超える価格の行を削除し、新しいファイルを作成しますが、今のところ、$文字を含むすべての行を削除し、端末に印刷しています。
このプログラムは、独自のソースで実行すると正常に動作しますが、Firefoxから保存されたクレイグリストの結果のhtmlページで実行すると、閉じ括弧まで印刷され、スタックスマッシング検出警告とバックトレースがスローされます。私はK&RからCを学んでいるので、このコードが時代遅れに見える場合はそれが理由です。
# include <stdio.h>
# define MAXLINE 300
main()
{
char line[MAXLINE];
int c;//current character
int p = 0;//position in the line
int flag = 0;//there is a dollar sign
while ((c = getchar()) != EOF){
line[p++] = c;
if (c == '$'){
flag = 1;
}
if (c == '\n'){
if(flag == 0){//there was no $, print the line
int i;
for(i=0;i<p;i++){
putchar(line[i]);
line[i] = '\0';
}
}
p = 0;
flag = 0;
}
}
}