int search = FALSE がどういう働きをしているのか分かりません
Posted: 2008年6月29日(日) 01:10
こんばんは。
入門書のプログラムなのですが、どうしてもプログラムの進行上理解できないことがあり
相談のため書かせていただきました。
このファイルの検索を行うソースコードの中でint search = FALSE; が
一体どのような働きをしているのかが、全く理解できません。
これは全体のソースの中で何の役に立っているのでしょうか?
if(search) { の条件の中にはFALSE、つまり0が入ると思うのですが、
0が入ったらif(0){ となり処理をしなくなるのではないのですか?
入門書に書いてある「フラグを立てる」という概念がイマイチ理解できずに苦しんでいます。
どうか分かりやすく教えていただけないでしょうか?
何卒お願いいたします。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FALSE 0
#define TRUE 1
main () {
FILE *fp;
char filename[256];
char key[128];
char c;
int keylen;
int i = 0;
int search = FALSE;
int count = 0;
printf("ファイル名を入力して下さい > ");
scanf("%s", filename);
printf("検索文字列 > ");
scanf("%s", key);
keylen = strlen(key);
if((fp = fopen(filename, "r")) == NULL) {
printf("ファイルオープンエラー\n");
exit(1);
}
while((c = fgetc(fp)) != EOF){
if(search) {
if(c != key) { search = FALSE; i = 0; }
else { i++; }
} else {
if(c == key) { search = TRUE; i++; }
}
if(keylen == i) { count++; i = 0; search = FALSE; }
}
fclose(fp);
printf("出現回数 %d\n", count);
return 0;
}
入門書のプログラムなのですが、どうしてもプログラムの進行上理解できないことがあり
相談のため書かせていただきました。
このファイルの検索を行うソースコードの中でint search = FALSE; が
一体どのような働きをしているのかが、全く理解できません。
これは全体のソースの中で何の役に立っているのでしょうか?
if(search) { の条件の中にはFALSE、つまり0が入ると思うのですが、
0が入ったらif(0){ となり処理をしなくなるのではないのですか?
入門書に書いてある「フラグを立てる」という概念がイマイチ理解できずに苦しんでいます。
どうか分かりやすく教えていただけないでしょうか?
何卒お願いいたします。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FALSE 0
#define TRUE 1
main () {
FILE *fp;
char filename[256];
char key[128];
char c;
int keylen;
int i = 0;
int search = FALSE;
int count = 0;
printf("ファイル名を入力して下さい > ");
scanf("%s", filename);
printf("検索文字列 > ");
scanf("%s", key);
keylen = strlen(key);
if((fp = fopen(filename, "r")) == NULL) {
printf("ファイルオープンエラー\n");
exit(1);
}
while((c = fgetc(fp)) != EOF){
if(search) {
if(c != key) { search = FALSE; i = 0; }
else { i++; }
} else {
if(c == key) { search = TRUE; i++; }
}
if(keylen == i) { count++; i = 0; search = FALSE; }
}
fclose(fp);
printf("出現回数 %d\n", count);
return 0;
}