작은숲:위키노트/C 언어 예제/파일의 단어 수 세기
<syntaxhighlight lang="c"> /**
* Copyright (c) 2001,2002 Yoon, Hyunho <hhyoon@kldp.org> * http://mooo.org * ---------------------------------------------------------------------- * * LICENSE * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
- include <stdio.h>
- include <stdlib.h>
- include <string.h>
- define MAXLINE 256
int main(int argc, char *argv[]) { unsigned int i, begin_word = 0, count = 0;
char fn[MAXLINE], buffer[MAXLINE];
FILE *fp;
if (argc > 1)
strcpy(fn, argv[1]);
else
strcpy(fn, "data266-1.txt");
if ((fp = fopen(fn, "r")) == NULL) {
printf("Cannot open the file: %s\n", fn);
exit(0);
}
while (!feof(fp)) {
if (fgets(buffer, MAXLINE, fp) == NULL) break;
for (i = 0; i < strlen(buffer); i++) {
if (buffer[i] == ' ' || buffer[i] == '\n' || buffer[i] == '\t') {
if (begin_word) {
count++;
begin_word = 0;
}
}
else {
if (!begin_word)
begin_word = 1;
}
}
}
fclose(fp);
printf("The number of words in \"%s\" is %d.\n", fn, count);
return 0;
}</source>